7#include <cx/taskqueue/worker/tqthreadworker.h>
9typedef struct TaskQueue TaskQueue;
10typedef struct TaskQueue_WeakRef TaskQueue_WeakRef;
11typedef struct TaskQueue TaskQueue;
12typedef struct TaskQueue_WeakRef TaskQueue_WeakRef;
13typedef struct TQThreadPoolRunner TQThreadPoolRunner;
14typedef struct TQThreadPoolRunner_WeakRef TQThreadPoolRunner_WeakRef;
15typedef struct TQThreadPoolManager TQThreadPoolManager;
16typedef struct TQThreadPoolManager_WeakRef TQThreadPoolManager_WeakRef;
20typedef struct TQThreadPoolManager_ClassIf {
25 bool (*start)(_In_
void* self, _In_ TaskQueue* tq);
26 bool (*stop)(_In_
void* self);
27 void (*notify)(_In_
void* self,
bool wakeup);
29 void (*pretask)(_In_
void* self);
30 int64 (*tick)(_In_
void* self);
31 void (*updatePoolSize)(_In_
void* self);
32} TQThreadPoolManager_ClassIf;
33extern TQThreadPoolManager_ClassIf TQThreadPoolManager_ClassIf_tmpl;
35typedef struct TQThreadPoolManager {
37 TQThreadPoolManager_ClassIf* _;
38 void* _is_TQThreadPoolManager;
48 TQThreadPoolRunner* runner;
54#define TQThreadPoolManager(inst) ((TQThreadPoolManager*)(unused_noeval((inst) && &((inst)->_is_TQThreadPoolManager)), (inst)))
55#define TQThreadPoolManagerNone ((TQThreadPoolManager*)NULL)
57typedef struct TQThreadPoolManager_WeakRef {
60 void* _is_TQThreadPoolManager_WeakRef;
61 void* _is_TQManager_WeakRef;
62 void* _is_ObjInst_WeakRef;
66} TQThreadPoolManager_WeakRef;
67#define TQThreadPoolManager_WeakRef(inst) ((TQThreadPoolManager_WeakRef*)(unused_noeval((inst) && &((inst)->_is_TQThreadPoolManager_WeakRef)), (inst)))
70#define tqthreadpoolmanagerStart(self, tq) (self)->_->start(TQThreadPoolManager(self), TaskQueue(tq))
72#define tqthreadpoolmanagerStop(self) (self)->_->stop(TQThreadPoolManager(self))
74#define tqthreadpoolmanagerNotify(self, wakeup) (self)->_->notify(TQThreadPoolManager(self), wakeup)
78#define tqthreadpoolmanagerPretask(self) (self)->_->pretask(TQThreadPoolManager(self))
80#define tqthreadpoolmanagerTick(self) (self)->_->tick(TQThreadPoolManager(self))
82#define tqthreadpoolmanagerUpdatePoolSize(self) (self)->_->updatePoolSize(TQThreadPoolManager(self))
#define saDeclarePtr(name)
CX Object System - Object-oriented programming in C.