37typedef struct ComplexTask_WeakRef ComplexTask_WeakRef;
39typedef struct ComplexTask_WeakRef ComplexTask_WeakRef;
40typedef struct TRMutex TRMutex;
41typedef struct TRMutex_WeakRef TRMutex_WeakRef;
45typedef struct TRMutex_ClassIf {
50 bool (*registerTask)(_In_
void* self,
ComplexTask* task);
51 bool (*canAcquire)(_In_
void* self,
ComplexTask* task);
52 bool (*tryAcquire)(_In_
void* self,
ComplexTask* task);
53 void (*release)(_In_
void* self,
ComplexTask* task);
54 void (*wakeup)(_In_
void* self);
56extern TRMutex_ClassIf TRMutex_ClassIf_tmpl;
61typedef struct TRMutex {
65 void* _is_TaskResource;
77#define TRMutex(inst) ((TRMutex*)(unused_noeval((inst) && &((inst)->_is_TRMutex)), (inst)))
78#define TRMutexNone ((TRMutex*)NULL)
80typedef struct TRMutex_WeakRef {
83 void* _is_TRMutex_WeakRef;
84 void* _is_TaskResource_WeakRef;
85 void* _is_ObjInst_WeakRef;
90#define TRMutex_WeakRef(inst) ((TRMutex_WeakRef*)(unused_noeval((inst) && &((inst)->_is_TRMutex_WeakRef)), (inst)))
97#define trmutexCreate() TRMutex_create()
100#define trmutexRegisterTask(self, task) (self)->_->registerTask(TRMutex(self), ComplexTask(task))
102#define trmutexCanAcquire(self, task) (self)->_->canAcquire(TRMutex(self), ComplexTask(task))
104#define trmutexTryAcquire(self, task) (self)->_->tryAcquire(TRMutex(self), ComplexTask(task))
106#define trmutexRelease(self, task) (self)->_->release(TRMutex(self), ComplexTask(task))
111#define trmutexWakeup(self) (self)->_->wakeup(TRMutex(self))
#define saDeclarePtr(name)
#define _objfactory_guaranteed
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.