一個簡單的線程池的實現(C++)

來源:互聯網
上載者:User

線程池的原理大家都知道,直接上代碼了^_^

Thread.h

[cpp]  view plain copy #ifndef __THREAD_H   #define __THREAD_H      #include <vector>   #include <string>   #include <pthread.h>      using namespace std;      /**   * 執行任務的類,設定任務資料並執行   */   class CTask   {   protected:       string m_strTaskName;  /** 任務的名稱 */       void* m_ptrData;       /** 要執行的任務的具體資料 */   public:       CTask(){}       CTask(string taskName)       {           m_strTaskName = taskName;           m_ptrData = NULL;       }       virtual int Run()= 0;       void SetData(void* data);    /** 設定任務資料 */      public:       virtual ~CTask(){}   };      /**   * 線程池管理類的實現   */   class CThreadPool   {   private:       static  vector<CTask*> m_vecTaskList;     /** 工作清單 */       static  bool shutdown;                    /** 線程退出標誌 */                int     m_iThreadNum;                     /** 線程池中啟動的線程數 */       pthread_t   *pthread_id;              static pthread_mutex_t m_pthreadMutex;    /** 線程同步鎖 */       static pthread_cond_t m_pthreadCond;      /** 線程同步的條件變數 */      protected:       static void* ThreadFunc(void * threadData); /** 新線程的線程回呼函數 */       static int MoveToIdle(pthread_t tid);       /** 線程執行結束後,把自己放入到空閑線程中 */       static int MoveToBusy(pthread_t tid);       /** 移入到忙碌線程中去 */              int Create();          /** 建立線程池中的線程 */

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.