2 #ifndef _YI_THREAD_POOLS_H_ 3 #define _YI_THREAD_POOLS_H_ 66 CYIThreadPools(
bool bInstanciateDefaultPool =
true, uint32_t uDefaultPoolThreadsCount = 0);
147 static bool RunOnUIThread(std::unique_ptr<CYITaskBase> pTask);
156 static bool RunAsync(std::unique_ptr<CYITaskBase> pTask);
171 class OneOffWorkerThread :
public CYIThread 174 OneOffWorkerThread(
CYIThreadPools *pOwnerPools, std::unique_ptr<CYITaskBase> pTask);
175 virtual ~OneOffWorkerThread();
176 virtual void Run()
override;
182 std::unique_ptr<CYITaskBase> m_pTask;
192 class ThreadDeletingTask :
public CYITask<bool>
195 ThreadDeletingTask(
CYIThreadPools *pOwnerPools, OneOffWorkerThread *pThread);
196 virtual ~ThreadDeletingTask();
197 virtual bool Run()
override;
201 OneOffWorkerThread *m_pThread;
209 std::map<CYIString, CYIThreadPool*> m_threadPools;
210 std::atomic<int32_t> m_nOneOffWorkerID;
211 std::atomic<int32_t> m_nNonDeletedOneOffWorkers;
220 #endif // _YI_THREAD_POOLS_H_ static bool RunOnNewThread(std::unique_ptr< CYITaskBase > pTask)
#define YI_DISALLOW_COPY_AND_ASSIGN(TypeName)
Delete the copy constructor and assignment operator (and consequently the move constructor as well) ...
Definition: YiPredef.h:114
static bool RunAsync(std::unique_ptr< CYITaskBase > pTask)
CYIThreadPool * InstanceGetManagedThreadPool(const CYIString &name, uint32_t uMaxSize=4, uint32_t uMaxSleepingSize=4, uint32_t uInitialSize=2, uint32_t uExpiryTimeMs=30000, YI_PRIORITY ePriority=YI_PRIORITY_DEFAULT, uint32_t uStackSize=CYIThread::DEFAULT_STACK_SIZE)
Definition: YiMutex.h:110
Container class for Unicode strings. Conceptually, a CYIString object is a sequence of Unicode charac...
Definition: YiString.h:35
static CYIThreadPool * GetDefaultThreadPool()
CYIThreadPools(bool bInstanciateDefaultPool=true, uint32_t uDefaultPoolThreadsCount=0)
Definition: YiThreadPool.h:39
static const uint32_t DEFAULT_STACK_SIZE
Definition: YiThread.h:91
YI_PRIORITY
Definition: YiThread.h:14
static uint32_t GetLogicalProcessorsCount(bool bUsableProcessorsOnly)
returns 0 if the processors count could not be determined
static CYIThreadPool * GetManagedThreadPool(const CYIString &name, uint32_t uMaxSize=4, uint32_t uMaxSleepingSize=4, uint32_t uInitialSize=2, uint32_t uExpiryTimeMs=30000, YI_PRIORITY ePriority=YI_PRIORITY_DEFAULT, uint32_t uStackSize=CYIThread::DEFAULT_STACK_SIZE)
bool InstanceRunOnNewThread(std::unique_ptr< CYITaskBase > pTask)
bool InstanceRunAsync(std::unique_ptr< CYITaskBase > pTask)
Definition: YiThread.h:24
static bool DestroyManagedThreadPool(const CYIString &name)
static bool RunOnUIThread(std::unique_ptr< CYITaskBase > pTask)
static uint32_t GetDefaultPoolThreadsCount()
bool InstanceDestroyManagedThreadPool(const CYIString &name)
CYIThreadPool * InstanceGetDefaultThreadPool()
Definition: YiThreadPools.h:58
Definition: YiThread.h:86