6#include <cx/taskqueue/queue/tqcomplex.h>
7#include <cx/taskqueue/queue/tqueue.h>
13#include <cx/taskqueue/worker/tqworker.h>
80_Ret_opt_valid_ _Check_return_ TaskQueue*
89#define tqStart taskqueueStart
97#define tqTick taskqueueTick
106#define tqShutdown(tq, wait) taskqueueStop(tq, wait)
113#define tqRelease(ptq) objRelease(ptq)
127#define tqAdd(tq, task) taskqueueAdd(tq, task)
135#define tqRun(tq, ptask) \
137 taskqueueAdd(tq, *ptask); \
141_meta_inline
bool _tqSchedule(_Inout_ TaskQueue* tq, _In_
ComplexTask* task, int64 delay)
143 ComplexTaskQueue* ctq =
objDynCast(ComplexTaskQueue, tq);
146 return ctaskqueueSchedule(ctq, task, delay);
156#define tqSchedule(tq, task, delay) _tqSchedule(tq, ComplexTask(task), delay)
158_meta_inline
bool _tqDefer(_Inout_ TaskQueue* tq, _In_
ComplexTask* task)
160 ComplexTaskQueue* ctq =
objDynCast(ComplexTaskQueue, tq);
163 return ctaskqueueDefer(ctq, task);
173#define tqDefer(tq, task) _tqDefer(tq, ComplexTask(task))
195bool tqCall(_Inout_ TaskQueue* tq, _In_ closure cls);
210_meta_inline uint32 _btaskState(
BasicTask* bt)
219#define btaskState(task) _btaskState(BasicTask(task))
225#define taskState(task) _btaskState(BasicTask(task))
227_meta_inline
bool _btaskIsRunning(
BasicTask* bt)
236#define btaskIsRunning(task) _btaskIsRunning(BasicTask(task))
242#define taskIsRunning(task) _btaskIsRunning(BasicTask(task))
244_meta_inline
bool _btaskIsPending(
BasicTask* bt)
246 uint32 state = _btaskState(bt);
254#define btaskIsPending(task) _btaskIsPending(BasicTask(task))
260#define taskIsPending(task) _btaskIsPending(BasicTask(task))
262_meta_inline
bool _btaskIsIdle(
BasicTask* bt)
264 uint32 state = _btaskState(bt);
273#define btaskIsIdle(task) _btaskIsIdle(BasicTask(task))
279#define taskIsIdle(task) _btaskIsIdle(BasicTask(task))
281_meta_inline
bool _btaskIsComplete(
BasicTask* bt)
283 uint32 state = _btaskState(bt);
291#define btaskIsComplete(task) _btaskIsComplete(BasicTask(task))
297#define taskIsComplete(task) _btaskIsComplete(BasicTask(task))
299_meta_inline
bool _btaskSucceeded(
BasicTask* bt)
308#define btaskSucceeded(task) _btaskSucceeded(BasicTask(task))
314#define taskSucceeded(task) _btaskSucceeded(BasicTask(task))
316_meta_inline
bool _btaskFailed(
BasicTask* bt)
325#define btaskFailed(task) _btaskFailed(BasicTask(task))
331#define taskFailed(task) _btaskFailed(BasicTask(task))
333_meta_inline
bool _btaskCancelled(
BasicTask* bt)
343#define btaskCancelled(task) _btaskCancelled(BasicTask(task))
350#define taskCancelled(task) _btaskCancelled(BasicTask(task))
358#define taskCancel(task) btaskCancel(task)
366#define taskWait(task, timeout) ftaskWait(task, timeout)
Basic closure functionality.
#define objDynCast(clsname, inst)
@ TASK_Deferred
Task is deferred, waiting for explicit advancement.
@ TASK_Created
Task has been created but not yet queued.
@ TASK_Running
Task is currently executing on a worker.
@ TASK_State_Mask
Mask to extract state value without flags.
@ TASK_Scheduled
Task is scheduled to run at a future time.
@ TASK_Cancelled
Flag indicating task has been cancelled (combines with state)
@ TASK_Failed
Task failed during execution.
@ TASK_Succeeded
Task completed successfully.
@ TASK_Waiting
Task is queued and waiting for a worker.
void tqPresetSingle(TaskQueueConfig *tqconfig)
void tqEnableMonitor(TaskQueueConfig *tqconfig)
void tqPresetHeavy(TaskQueueConfig *tqconfig)
void tqPresetMinimal(TaskQueueConfig *tqconfig)
void tqPresetBalanced(TaskQueueConfig *tqconfig)
void tqPresetManual(TaskQueueConfig *tqconfig)
TaskQueue * tqCreate(strref name, const TaskQueueConfig *tqconfig)
int32 tqWorkers(TaskQueue *tq)
bool tqCall(TaskQueue *tq, closure cls)
Multiphase task with internal state machine.
Bare minimum task object with state tracking and run method.
Complex task with dependencies, scheduling, and resource management.
Complete configuration for a task queue.
Gate-based event synchronization for tasks.
FIFO-ordered task resource.
LIFO-ordered task resource.
Mutex-based task resource.