线程池基于生产者消费者概念:
生产者–>任务队列–>线程队列–>消费者
线程的调用根据线程优先级别和资源状况等,由CPU调度
//ThreadPool.h
class ThreadPool : noncopyable
{
public:
typedef std::function<void ()> Task;//任务函数,即任务队列中的元素
...
}
//ThreadPool.cc
//ThreadPool.cc
void ThreadPool::start(int numThreads)//主线程调用
{
assert(threads_.empty());
running_ = true;
threads_.reserve