40typedef struct ComplexTask_WeakRef ComplexTask_WeakRef;
42typedef struct ComplexTask_WeakRef ComplexTask_WeakRef;
43typedef struct TRFifoNode TRFifoNode;
45typedef struct TRFifo_WeakRef TRFifo_WeakRef;
48#define _sti_TRFifo _sti_object
49#define SType_TRFifo TRFifo*
50#define STStorageType_TRFifo TRFifo*
51#define STypeArg_TRFifo(type, val) stgeneric(object, (ObjInst*)objInstCheckClass(TRFifo, val))
52#define STypeArgPtr_TRFifo(type, val) (stgeneric*)objInstCheckClassPtr(TRFifo, val)
53#define STypeCheckedArg_TRFifo(type, val) stType(type), stArg(type, val)
54#define STypeCheckedPtrArg_TRFifo(type, val) stType(type), stArgPtr(type, val)
56typedef struct TRFifoNode {
61typedef struct TRFifo_ClassIf {
66 bool (*registerTask)(_In_
void* self,
ComplexTask* task);
67 bool (*canAcquire)(_In_
void* self,
ComplexTask* task);
68 bool (*tryAcquire)(_In_
void* self,
ComplexTask* task);
69 void (*release)(_In_
void* self,
ComplexTask* task);
71extern TRFifo_ClassIf TRFifo_ClassIf_tmpl;
78 void* _is_TaskResource;
91#define TRFifo(inst) objInstCheckClass(TRFifo, inst)
92#define TRFifoNone ((TRFifo*)NULL)
94typedef struct TRFifo_WeakRef {
97 void* _is_TRFifo_WeakRef;
98 void* _is_TaskResource_WeakRef;
99 void* _is_ObjInst_WeakRef;
101 atomic(uintptr) _ref;
104#define TRFifo_WeakRef(inst) objWeakRefCheckClass(TRFifo, inst)
111#define trfifoCreate() TRFifo_create()
114#define trfifoRegisterTask(self, task) (self)->_->registerTask(TRFifo(self), ComplexTask(task))
116#define trfifoCanAcquire(self, task) (self)->_->canAcquire(TRFifo(self), ComplexTask(task))
118#define trfifoTryAcquire(self, task) (self)->_->tryAcquire(TRFifo(self), ComplexTask(task))
120#define trfifoRelease(self, task) (self)->_->release(TRFifo(self), ComplexTask(task))
#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.
Strictly ordered FIFO resource for serialized task execution.
TRFifoNode * head
Head of wait queue.
TRFifoNode * tail
Tail of wait queue.
ComplexTask * cur
Currently running task.
Abstract base class for shared resources.