8#include <cx/taskqueue/worker/tqthreadworker.h>
13typedef struct TaskQueue TaskQueue;
14typedef struct TaskQueue_WeakRef TaskQueue_WeakRef;
15typedef struct TaskQueue TaskQueue;
16typedef struct TaskQueue_WeakRef TaskQueue_WeakRef;
17typedef struct TaskQueue TaskQueue;
18typedef struct TaskQueue_WeakRef TaskQueue_WeakRef;
19typedef struct TQThreadWorker TQThreadWorker;
20typedef struct TQThreadWorker_WeakRef TQThreadWorker_WeakRef;
21typedef struct TQThreadPoolRunner TQThreadPoolRunner;
22typedef struct TQThreadPoolRunner_WeakRef TQThreadPoolRunner_WeakRef;
25#define _sti_TQThreadPoolRunner _sti_object
26#define SType_TQThreadPoolRunner TQThreadPoolRunner*
27#define STStorageType_TQThreadPoolRunner TQThreadPoolRunner*
28#define STypeArg_TQThreadPoolRunner(type, val) stgeneric(object, (ObjInst*)objInstCheckClass(TQThreadPoolRunner, val))
29#define STypeArgPtr_TQThreadPoolRunner(type, val) (stgeneric*)objInstCheckClassPtr(TQThreadPoolRunner, val)
30#define STypeCheckedArg_TQThreadPoolRunner(type, val) stType(type), stArg(type, val)
31#define STypeCheckedPtrArg_TQThreadPoolRunner(type, val) stType(type), stArgPtr(type, val)
33typedef struct TQThreadPoolRunner_ClassIf {
38 bool (*start)(_In_
void* self, _In_ TaskQueue* tq);
39 int64 (*tick)(_In_
void* self);
40 bool (*stop)(_In_
void* self);
41 bool (*addWorker)(_In_
void* self);
42 bool (*removeWorker)(_In_
void* self);
45} TQThreadPoolRunner_ClassIf;
46extern TQThreadPoolRunner_ClassIf TQThreadPoolRunner_ClassIf_tmpl;
48typedef struct TQThreadPoolRunner {
50 TQThreadPoolRunner_ClassIf* _;
51 void* _is_TQThreadPoolRunner;
63 sa_TQThreadWorker workers;
67#define TQThreadPoolRunner(inst) objInstCheckClass(TQThreadPoolRunner, inst)
68#define TQThreadPoolRunnerNone ((TQThreadPoolRunner*)NULL)
70typedef struct TQThreadPoolRunner_WeakRef {
73 void* _is_TQThreadPoolRunner_WeakRef;
74 void* _is_TQRunner_WeakRef;
75 void* _is_ObjInst_WeakRef;
79} TQThreadPoolRunner_WeakRef;
80#define TQThreadPoolRunner_WeakRef(inst) objWeakRefCheckClass(TQThreadPoolRunner, inst)
84#define tqthreadpoolrunnerCreate(config) TQThreadPoolRunner_create(config)
87#define tqthreadpoolrunnerStart(self, tq) (self)->_->start(TQThreadPoolRunner(self), TaskQueue(tq))
89#define tqthreadpoolrunnerTick(self) (self)->_->tick(TQThreadPoolRunner(self))
91#define tqthreadpoolrunnerStop(self) (self)->_->stop(TQThreadPoolRunner(self))
93#define tqthreadpoolrunnerAddWorker(self) (self)->_->addWorker(TQThreadPoolRunner(self))
95#define tqthreadpoolrunnerRemoveWorker(self) (self)->_->removeWorker(TQThreadPoolRunner(self))
99#define tqthreadpoolrunnerCreateWorker(self, num) (self)->_->createWorker(TQThreadPoolRunner(self), num)
#define saDeclarePtr(name)
#define _objfactory_guaranteed
CX Struct System - Introspectable, serializable POD structures in C.
CX Object System - Object-oriented programming in C.
Reader-writer lock synchronization primitive.
Thread pool configuration for a task queue.