5#include <cx/taskqueue/queue/tqcomplex.h>
6#include <cx/taskqueue/queue/tqueue.h>
12#include <cx/taskqueue/worker/tqworker.h>
78_Ret_opt_valid_ _Check_return_
87#define tqStart taskqueueStart
95#define tqTick taskqueueTick
104#define tqShutdown(tq, wait) taskqueueStop(tq, wait)
111#define tqRelease(ptq) objRelease(ptq)
126#define tqAdd(tq, task) taskqueueAdd(tq, task)
134#define tqRun(tq, ptask) do { taskqueueAdd(tq, *ptask); objRelease(ptask); } while(0)
136_meta_inline
bool _tqSchedule(_Inout_ TaskQueue* tq, _In_
ComplexTask* task, int64 delay)
138 ComplexTaskQueue* ctq =
objDynCast(ComplexTaskQueue, tq);
141 return ctaskqueueSchedule(ctq, task, delay);
151#define tqSchedule(tq, task, delay) _tqSchedule(tq, ComplexTask(task), delay)
153_meta_inline
bool _tqDefer(_Inout_ TaskQueue* tq, _In_
ComplexTask* task)
155 ComplexTaskQueue* ctq =
objDynCast(ComplexTaskQueue, tq);
158 return ctaskqueueDefer(ctq, task);
168#define tqDefer(tq, task) _tqDefer(tq, ComplexTask(task))
201_meta_inline uint32 _btaskState(
BasicTask *bt)
210#define btaskState(task) _btaskState(BasicTask(task))
216#define taskState(task) _btaskState(BasicTask(task))
218_meta_inline
bool _btaskIsRunning(
BasicTask *bt)
227#define btaskIsRunning(task) _btaskIsRunning(BasicTask(task))
233#define taskIsRunning(task) _btaskIsRunning(BasicTask(task))
235_meta_inline
bool _btaskIsPending(
BasicTask *bt)
237 uint32 state = _btaskState(bt);
245#define btaskIsPending(task) _btaskIsPending(BasicTask(task))
251#define taskIsPending(task) _btaskIsPending(BasicTask(task))
253_meta_inline
bool _btaskIsIdle(
BasicTask *bt)
255 uint32 state = _btaskState(bt);
264#define btaskIsIdle(task) _btaskIsIdle(BasicTask(task))
270#define taskIsIdle(task) _btaskIsIdle(BasicTask(task))
272_meta_inline
bool _btaskIsComplete(
BasicTask* bt)
274 uint32 state = _btaskState(bt);
282#define btaskIsComplete(task) _btaskIsComplete(BasicTask(task))
288#define taskIsComplete(task) _btaskIsComplete(BasicTask(task))
290_meta_inline
bool _btaskSucceeded(
BasicTask *bt)
299#define btaskSucceeded(task) _btaskSucceeded(BasicTask(task))
305#define taskSucceeded(task) _btaskSucceeded(BasicTask(task))
307_meta_inline
bool _btaskFailed(
BasicTask *bt)
316#define btaskFailed(task) _btaskFailed(BasicTask(task))
322#define taskFailed(task) _btaskFailed(BasicTask(task))
324_meta_inline
bool _btaskCancelled(
BasicTask *bt)
334#define btaskCancelled(task) _btaskCancelled(BasicTask(task))
341#define taskCancelled(task) _btaskCancelled(BasicTask(task))
349#define taskCancel(task) btaskCancel(task)
357#define taskWait(task, timeout) ftaskWait(task, timeout)
#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, TaskQueueConfig *tqconfig)
bool tqCall(TaskQueue *tq, UserTaskCB func, void *userdata)
bool(* UserTaskCB)(TaskQueue *tq, void *data)
int32 tqWorkers(TaskQueue *tq)
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.