|
CX Framework
Cross-platform C utility framework
|
Data Structures | |
| struct | TRGate |
| One-time event gate for task synchronization. More... | |
| struct | TaskRequiresGate |
| Requirement that waits for a gate to open. More... | |
Macros | |
| #define | trgateCreate(name) TRGate_create(name) |
| #define | trgateOpen(self) (self)->_->open(TRGate(self)) |
| #define | trgateSeal(self) (self)->_->seal(TRGate(self)) |
| #define | trgateProgress(self) (self)->_->progress(TRGate(self)) |
| #define | trgateRegisterTask(self, task) (self)->_->registerTask(TRGate(self), ComplexTask(task)) |
| #define | taskrequiresgateCreate(gate) TaskRequiresGate_create(TRGate(gate)) |
Typedefs | |
| typedef struct TRGate | TRGate |
| One-time event gate for task synchronization. | |
| typedef struct TaskRequiresGate | TaskRequiresGate |
| Requirement that waits for a gate to open. | |
Gates provide a lightweight synchronization primitive for tasks waiting on one-time events. Similar to task dependencies, but more flexible and efficient when multiple tasks need to wait for the same external event.
Gate states:
Use cases:
Gates track progress timestamps which prevent monitoring from reporting stuck tasks. Call progress() periodically while work is ongoing but the gate isn't ready to open.
| #define taskrequiresgateCreate | ( | gate | ) | TaskRequiresGate_create(TRGate(gate)) |
TaskRequiresGate* taskrequiresgateCreate(TRGate* gate);
Create a gate requirement.
| gate | Gate that must be opened before task can run |
Definition at line 184 of file taskrequiresgate.h.
| #define trgateCreate | ( | name | ) | TRGate_create(name) |
TRGate* trgateCreate(strref name);
Create a new gate.
| name | Gate name for logging and debugging |
Definition at line 121 of file taskrequiresgate.h.
| #define trgateOpen | ( | self | ) | (self)->_->open(TRGate(self)) |
bool trgateOpen(TRGate* self);
Open the gate, releasing all waiting tasks. Future tasks depending on this gate will not wait.
Definition at line 128 of file taskrequiresgate.h.
| #define trgateProgress | ( | self | ) | (self)->_->progress(TRGate(self)) |
void trgateProgress(TRGate* self);
Update progress timestamp without opening gate. Prevents monitoring from reporting tasks as stalled.
Definition at line 139 of file taskrequiresgate.h.
| #define trgateRegisterTask | ( | self, | |
| task | |||
| ) | (self)->_->registerTask(TRGate(self), ComplexTask(task)) |
bool trgateRegisterTask(TRGate* self, ComplexTask* task);
Register a task to be advanced when gate opens.
| task | Task to register |
Definition at line 145 of file taskrequiresgate.h.
| #define trgateSeal | ( | self | ) | (self)->_->seal(TRGate(self)) |
bool trgateSeal(TRGate* self);
Seal the gate permanently. Any task depending on a sealed gate will fail immediately.
Definition at line 134 of file taskrequiresgate.h.