加入收藏 | 设为首页 | 会员中心 | 我要投稿 我爱制作网_沈阳站长网 (https://www.024zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

Linux下的C/C++线程池封装

发布时间:2022-11-21 12:54:14 所属栏目:Linux 来源:
导读:  #ifndef _THREAD_POLL_H_

  #define _THREAD_POLL_H_

  #include

  #include

  #include

  #include "task.h"

  #include "nthread.h"

  using namespace std;

 
  #ifndef _THREAD_POLL_H_
 
  #define _THREAD_POLL_H_
 
  #include
 
  #include
 
  #include
 
  #include "task.h"
 
  #include "nthread.h"
 
  using namespace std;
 
  /*
 
  * 构造函数有两个参数线程池linux,(最大线程,每次新创建的线程)
 
  * 当任务容器里面的任务是 可用的两倍就新增 $(每次新创建的线程) 的数量
 
  */
 
  class ThreadPoll
 
  {
 
  private:
 
  int ThreadNum; //当前线程数量
 
  int MaxThread; //最大线程数量
 
  int CreateThread; //每次创建的大小
 
  int ActiveThread; //当前活跃的线程数量
 
  pthread_mutex_t mutex;
 
  pthread_mutex_t mutexActive;
 
  pthread_cond_t cond;
 
  vector TaskList; //任务向量列表
 
  pthread_t * phtread_id; //线程id
 
  vector NThreadList; //NThread 对象向量列表
 
  bool isRun; //是否运行的标志位
 
  private:
 
  static void * threadFunc(void * p); //线程函数
 
  public:
 
  enum ThreadCtrl{ADD,DEL}; //添加或者减少计数
 
  ThreadPoll(int maxThread,int createThread = 4); //构造函数 maxThread为最大的线程createThread为每次最多创建的线程
 
  ~ThreadPoll(); //析构
 
  void AddTask(Task * Addtask); //添加任务到任务向量列表
 
  void Destroy(); //结束所有线程,正在运行的等待运行
 
  void ChangeActiveThread(ThreadCtrl ctrl); //改变当前占用进程的累计计数
 
  int GetSleepThreadNum(); //获得可用的进程数量
 
  };
 
  #endif //_THREAD_POLL_H_
 

(编辑:我爱制作网_沈阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!