42typedef struct ComplexTask_WeakRef ComplexTask_WeakRef;
43typedef struct TaskQueue TaskQueue;
44typedef struct TaskQueue_WeakRef TaskQueue_WeakRef;
45typedef struct TQWorker TQWorker;
46typedef struct TQWorker_WeakRef TQWorker_WeakRef;
48typedef struct ComplexTask_WeakRef ComplexTask_WeakRef;
50typedef struct TRGate_WeakRef TRGate_WeakRef;
51typedef struct ComplexTaskQueue ComplexTaskQueue;
52typedef struct ComplexTaskQueue_WeakRef ComplexTaskQueue_WeakRef;
54typedef struct TRLifo TRLifo;
55typedef struct TRLifo_WeakRef TRLifo_WeakRef;
58#define _sti_TRLifo _sti_object
59#define SType_TRLifo TRLifo*
60#define STStorageType_TRLifo TRLifo*
61#define STypeArg_TRLifo(type, val) stgeneric(object, (ObjInst*)objInstCheckClass(TRLifo, val))
62#define STypeArgPtr_TRLifo(type, val) (stgeneric*)objInstCheckClassPtr(TRLifo, val)
63#define STypeCheckedArg_TRLifo(type, val) stType(type), stArg(type, val)
64#define STypeCheckedPtrArg_TRLifo(type, val) stType(type), stArgPtr(type, val)
66typedef struct TRLifo_ClassIf {
71 bool (*registerTask)(_In_
void* self,
ComplexTask* task);
72 bool (*canAcquire)(_In_
void* self,
ComplexTask* task);
73 bool (*tryAcquire)(_In_
void* self,
ComplexTask* task);
74 void (*release)(_In_
void* self,
ComplexTask* task);
76extern TRLifo_ClassIf TRLifo_ClassIf_tmpl;
81typedef struct TRLifo {
85 void* _is_TaskResource;
97#define TRLifo(inst) objInstCheckClass(TRLifo, inst)
98#define TRLifoNone ((TRLifo*)NULL)
100typedef struct TRLifo_WeakRef {
103 void* _is_TRLifo_WeakRef;
104 void* _is_TaskResource_WeakRef;
105 void* _is_ObjInst_WeakRef;
107 atomic(uintptr) _ref;
110#define TRLifo_WeakRef(inst) objWeakRefCheckClass(TRLifo, inst)
117#define trlifoCreate() TRLifo_create()
120#define trlifoRegisterTask(self, task) (self)->_->registerTask(TRLifo(self), ComplexTask(task))
122#define trlifoCanAcquire(self, task) (self)->_->canAcquire(TRLifo(self), ComplexTask(task))
124#define trlifoTryAcquire(self, task) (self)->_->tryAcquire(TRLifo(self), ComplexTask(task))
126#define trlifoRelease(self, task) (self)->_->release(TRLifo(self), ComplexTask(task))
Complex task with dependencies, scheduling, and resource management.
#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.
One-time event gate for task synchronization.
Abstract base class for shared resources.