线程池
线程池:
一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个 线程,等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价。线程池不仅能够保证内核的充分利用,还能防止过分调度。
应 用:
- 需要大量的线程来完成任务,且完成任务的时间比较短。
- 对性能要求苛刻的应用,比如要求服务器迅速响应客户请求。
- 接受突发性的大量请求,但不至于使服务器因此产生大量线程的应用。
29 class ThreadPool{
30 private:
31 int num;
32 queue<Task> q;
33 pthread_mutex_t lock;
34 pthread_cond_t cond;
65 public:
66 ThreadPool(int num_ = 6)
67 :num(num_)
68 {
69 pthread_mutex_init(&lock, nullptr);
70 pthread_cond_init(&con