remote_globs['setUpModule'] = setUpModule
remote_globs['tearDownModule'] = tearDownModule
+
+
+@unittest.skipIf(not hasattr(_multiprocessing, 'SemLock'), 'SemLock not available')
+class SemLockTests(unittest.TestCase):
+
+ def test_semlock_subclass(self):
+ class SemLock(_multiprocessing.SemLock):
+ pass
+ name = f'test_semlock_subclass-{os.getpid()}'
+ s = SemLock(1, 0, 10, name, 0)
+ _multiprocessing.sem_unlink(name)
newsemlockobject(PyTypeObject *type, SEM_HANDLE handle, int kind, int maxvalue,
char *name)
{
- SemLockObject *self;
-
- self = PyObject_New(SemLockObject, type);
+ SemLockObject *self = (SemLockObject *)type->tp_alloc(type, 0);
if (!self)
return NULL;
self->handle = handle;
if (self->handle != SEM_FAILED)
SEM_CLOSE(self->handle);
PyMem_Free(self->name);
- PyObject_Free(self);
+ Py_TYPE(self)->tp_free((PyObject*)self);
}
/*[clinic input]