17 string m_strTaskName
; /** 任务的名称 */
18 void* m_ptrData
; /** 要执行的任务的具体数据 */
25 CTask(string taskName
)
27 m_strTaskName
= taskName
;
31 void SetData(void* data
); /** 设置任务数据 */
38 typedef list
<CTask
*> TaskList
; // the task list.
46 static TaskList m_TaskList
; /** 任务列表 */
47 static bool shutdown
; /** 线程退出标志 */
48 int m_iThreadNum
; /** 线程池中启动的线程数 */
49 pthread_t
*pthread_id
;
51 static pthread_mutex_t m_pthreadMutex
; /** 线程同步锁 */
52 static pthread_cond_t m_pthreadCond
; /** 线程同步的条件变量 */
53 static int m_task_count
; // record the tasks number which have not finished.
56 static void* ThreadFunc(void * threadData
); /** 新线程的线程回调函数 */
57 static int MoveToIdle(pthread_t tid
); /** 线程执行结束后,把自己放入到空闲线程中 */
58 static int MoveToBusy(pthread_t tid
); /** 移入到忙碌线程中去 */
60 int Create(); /** 创建线程池中的线程 */
63 CThreadPool(int threadNum
= 10);
64 int AddTask(CTask
*task
); /** 把任务添加到任务队列中 */
65 int StopAll(); /** 使线程池中的线程退出 */
66 int getTaskSize(); /** 获取当前任务队列中的任务数 */