40typedef struct ComplexTask_WeakRef ComplexTask_WeakRef;
42typedef struct ComplexTask_WeakRef ComplexTask_WeakRef;
43typedef struct TRMutex TRMutex;
44typedef struct TRMutex_WeakRef TRMutex_WeakRef;
47#define _sti_TRMutex _sti_object
48#define SType_TRMutex TRMutex*
49#define STStorageType_TRMutex TRMutex*
50#define STypeArg_TRMutex(type, val) stgeneric(object, (ObjInst*)objInstCheckClass(TRMutex, val))
51#define STypeArgPtr_TRMutex(type, val) (stgeneric*)objInstCheckClassPtr(TRMutex, val)
52#define STypeCheckedArg_TRMutex(type, val) stType(type), stArg(type, val)
53#define STypeCheckedPtrArg_TRMutex(type, val) stType(type), stArgPtr(type, val)
55typedef struct TRMutex_ClassIf {
60 bool (*registerTask)(_In_
void* self,
ComplexTask* task);
61 bool (*canAcquire)(_In_
void* self,
ComplexTask* task);
62 bool (*tryAcquire)(_In_
void* self,
ComplexTask* task);
63 void (*release)(_In_
void* self,
ComplexTask* task);
64 void (*wakeup)(_In_
void* self);
66extern TRMutex_ClassIf TRMutex_ClassIf_tmpl;
71typedef struct TRMutex {
75 void* _is_TaskResource;
87#define TRMutex(inst) objInstCheckClass(TRMutex, inst)
88#define TRMutexNone ((TRMutex*)NULL)
90typedef struct TRMutex_WeakRef {
93 void* _is_TRMutex_WeakRef;
94 void* _is_TaskResource_WeakRef;
95 void* _is_ObjInst_WeakRef;
100#define TRMutex_WeakRef(inst) objWeakRefCheckClass(TRMutex, inst)
107#define trmutexCreate() TRMutex_create()
110#define trmutexRegisterTask(self, task) (self)->_->registerTask(TRMutex(self), ComplexTask(task))
112#define trmutexCanAcquire(self, task) (self)->_->canAcquire(TRMutex(self), ComplexTask(task))
114#define trmutexTryAcquire(self, task) (self)->_->tryAcquire(TRMutex(self), ComplexTask(task))
116#define trmutexRelease(self, task) (self)->_->release(TRMutex(self), ComplexTask(task))
121#define trmutexWakeup(self) (self)->_->wakeup(TRMutex(self))
#define saDeclarePtr(name)
#define _objfactory_guaranteed
CX Struct System - Introspectable, serializable POD structures in C.
Mutex synchronization primitive.
CX Object System - Object-oriented programming in C.
Complex task with dependencies, scheduling, and resource management.
Abstract base class for shared resources.