|
CX Framework
Cross-platform C utility framework
|
Modules | |
| FIFO | |
| LIFO | |
| Mutex | |
Data Structures | |
| struct | TaskResource |
| Abstract base for shared resources with exclusive access. More... | |
Macros | |
| #define | taskresourceRegisterTask(self, task) (self)->_->registerTask(TaskResource(self), ComplexTask(task)) |
| #define | taskresourceCanAcquire(self, task) (self)->_->canAcquire(TaskResource(self), ComplexTask(task)) |
| #define | taskresourceTryAcquire(self, task) (self)->_->tryAcquire(TaskResource(self), ComplexTask(task)) |
| #define | taskresourceRelease(self, task) (self)->_->release(TaskResource(self), ComplexTask(task)) |
Typedefs | |
| typedef struct TaskResource | TaskResource |
| Abstract base for shared resources with exclusive access. | |
TaskResource is the abstract base for all shared resources that tasks can acquire for exclusive access. Resources enable serialized access patterns without blocking worker threads.
Resource lifecycle:
Concrete implementations:
Resources handle their own wakeup mechanisms, typically by advancing waiting tasks out of the defer queue when the resource becomes available.
| #define taskresourceCanAcquire | ( | self, | |
| task | |||
| ) | (self)->_->canAcquire(TaskResource(self), ComplexTask(task)) |
bool taskresourceCanAcquire(TaskResource* self, ComplexTask* task);
Check if task can attempt to acquire the resource now.
| task | Task checking acquisition possibility |
Definition at line 95 of file taskresource.h.
| #define taskresourceRegisterTask | ( | self, | |
| task | |||
| ) | (self)->_->registerTask(TaskResource(self), ComplexTask(task)) |
bool taskresourceRegisterTask(TaskResource* self, ComplexTask* task);
Register task with resource for later notification. Reserves a slot in FIFO/LIFO queues. Registration is consumed by successful acquisition.
| task | Task to register |
Definition at line 89 of file taskresource.h.
| #define taskresourceRelease | ( | self, | |
| task | |||
| ) | (self)->_->release(TaskResource(self), ComplexTask(task)) |
void taskresourceRelease(TaskResource* self, ComplexTask* task);
Release resource previously acquired by task. State tracking is maintained by caller.
| task | Task releasing resource |
Definition at line 108 of file taskresource.h.
| #define taskresourceTryAcquire | ( | self, | |
| task | |||
| ) | (self)->_->tryAcquire(TaskResource(self), ComplexTask(task)) |
bool taskresourceTryAcquire(TaskResource* self, ComplexTask* task);
Try to acquire resource exclusively for task. MUST NOT block. State tracking (owned flag) is maintained by caller (TaskRequiresResource).
| task | Task acquiring resource |
Definition at line 102 of file taskresource.h.