37typedef struct ComplexTask_WeakRef ComplexTask_WeakRef;
39typedef struct ComplexTask_WeakRef ComplexTask_WeakRef;
40typedef struct TRFifoNode TRFifoNode;
42typedef struct TRFifo_WeakRef TRFifo_WeakRef;
50typedef struct TRFifoNode {
55typedef struct TRFifo_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);
65extern TRFifo_ClassIf TRFifo_ClassIf_tmpl;
72 void* _is_TaskResource;
85#define TRFifo(inst) ((TRFifo*)(unused_noeval((inst) && &((inst)->_is_TRFifo)), (inst)))
86#define TRFifoNone ((TRFifo*)NULL)
88typedef struct TRFifo_WeakRef {
91 void* _is_TRFifo_WeakRef;
92 void* _is_TaskResource_WeakRef;
93 void* _is_ObjInst_WeakRef;
98#define TRFifo_WeakRef(inst) ((TRFifo_WeakRef*)(unused_noeval((inst) && &((inst)->_is_TRFifo_WeakRef)), (inst)))
105#define trfifoCreate() TRFifo_create()
108#define trfifoRegisterTask(self, task) (self)->_->registerTask(TRFifo(self), ComplexTask(task))
110#define trfifoCanAcquire(self, task) (self)->_->canAcquire(TRFifo(self), ComplexTask(task))
112#define trfifoTryAcquire(self, task) (self)->_->tryAcquire(TRFifo(self), ComplexTask(task))
114#define trfifoRelease(self, task) (self)->_->release(TRFifo(self), ComplexTask(task))
#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.
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.