7#include <cx/taskqueue/worker/tqthreadworker.h>
10typedef struct TaskQueue TaskQueue;
11typedef struct TaskQueue_WeakRef TaskQueue_WeakRef;
12typedef struct TaskQueue TaskQueue;
13typedef struct TaskQueue_WeakRef TaskQueue_WeakRef;
14typedef struct TaskQueue TaskQueue;
15typedef struct TaskQueue_WeakRef TaskQueue_WeakRef;
16typedef struct TQThreadWorker TQThreadWorker;
17typedef struct TQThreadWorker_WeakRef TQThreadWorker_WeakRef;
18typedef struct TQThreadPoolRunner TQThreadPoolRunner;
19typedef struct TQThreadPoolRunner_WeakRef TQThreadPoolRunner_WeakRef;
23typedef struct TQThreadPoolRunner_ClassIf {
28 bool (*start)(_In_
void* self, _In_ TaskQueue* tq);
29 int64 (*tick)(_In_
void* self);
30 bool (*stop)(_In_
void* self);
31 bool (*addWorker)(_In_
void* self);
32 bool (*removeWorker)(_In_
void* self);
35} TQThreadPoolRunner_ClassIf;
36extern TQThreadPoolRunner_ClassIf TQThreadPoolRunner_ClassIf_tmpl;
38typedef struct TQThreadPoolRunner {
40 TQThreadPoolRunner_ClassIf* _;
41 void* _is_TQThreadPoolRunner;
53 sa_TQThreadWorker workers;
57#define TQThreadPoolRunner(inst) ((TQThreadPoolRunner*)(unused_noeval((inst) && &((inst)->_is_TQThreadPoolRunner)), (inst)))
58#define TQThreadPoolRunnerNone ((TQThreadPoolRunner*)NULL)
60typedef struct TQThreadPoolRunner_WeakRef {
63 void* _is_TQThreadPoolRunner_WeakRef;
64 void* _is_TQRunner_WeakRef;
65 void* _is_ObjInst_WeakRef;
69} TQThreadPoolRunner_WeakRef;
70#define TQThreadPoolRunner_WeakRef(inst) ((TQThreadPoolRunner_WeakRef*)(unused_noeval((inst) && &((inst)->_is_TQThreadPoolRunner_WeakRef)), (inst)))
74#define tqthreadpoolrunnerCreate(config) TQThreadPoolRunner_create(config)
77#define tqthreadpoolrunnerStart(self, tq) (self)->_->start(TQThreadPoolRunner(self), TaskQueue(tq))
79#define tqthreadpoolrunnerTick(self) (self)->_->tick(TQThreadPoolRunner(self))
81#define tqthreadpoolrunnerStop(self) (self)->_->stop(TQThreadPoolRunner(self))
83#define tqthreadpoolrunnerAddWorker(self) (self)->_->addWorker(TQThreadPoolRunner(self))
85#define tqthreadpoolrunnerRemoveWorker(self) (self)->_->removeWorker(TQThreadPoolRunner(self))
89#define tqthreadpoolrunnerCreateWorker(self, num) (self)->_->createWorker(TQThreadPoolRunner(self), num)
#define saDeclarePtr(name)
#define _objfactory_guaranteed
CX Object System - Object-oriented programming in C.
Reader-writer lock synchronization primitive.
Thread pool configuration for a task queue.