深入解析C++编程中线程池的使用

2020-01-06 14:01:59于海丽
  •   char* m_JobName; //The job name 
  •   CThread *m_pWorkThread; //The thread associated with the job 
  •   public: 
  •   CJob( void ); 
  •   virtual ~CJob();  
  •   int GetJobNo(void) const { return m_JobNo; } 
  •   void SetJobNo(int jobno){ m_JobNo = jobno;} 
  •   char* GetJobName(void) const { return m_JobName; } 
  •   void SetJobName(char* jobname); 
  •   CThread *GetWorkThread(void){ return m_pWorkThread; } 
  •   void SetWorkThread ( CThread *pWorkThread ){ 
  •   m_pWorkThread = pWorkThread; 
  •   } 
  •   virtual void Run ( void *ptr ) = 0; 
  •   };  

    线程池使用示例

    至此我们给出了一个简单的与具体任务无关的线程池框架。使用该框架非常的简单,我们所需要的做的就是派生CJob类,将需要完成的任务实现在Run方法中。然后将该Job交由CThreadManage去执行。下面我们给出一个简单的示例程序

     

     
    1. class CXJob:public CJob  { 
    2.   public: 
    3.   CXJob(){i=0;} 
    4.   ~CXJob(){} 
    5.   void Run(void* jobdata) { 
    6.   printf("The Job comes from CXJOBn");