项目地址:https://github.com/progschj/ThreadPool
项目源码:
- #ifndef THREAD_POOL_H
- #define THREAD_POOL_H
- <h1 id="include-vector">include <vector></h1>
- <h1 id="include-queue">include <queue></h1>
- <h1 id="include-memory">include <memory></h1>
- <h1 id="include-thread">include <thread></h1>
- <h1 id="include-mutex">include <mutex></h1>
- <h1 id="include-condition_variable">include <condition_variable></h1>
- <h1 id="include-future">include <future></h1>
- <h1 id="include-functional">include <functional></h1>
- <h1 id="include-stdexcept">include <stdexcept></h1>
- <p>class ThreadPool {
- public:
- ThreadPool(size_t);
- template<class F, class... Args>
- auto enqueue(F&& f, Args&&... args)
- -> std::future<typename std::result_of<F(Args...)>::type>;
- ~ThreadPool();
- private:
- // need to keep track of threads so we can join them
- std::vector< std::thread > workers;
- // the task queue
- std::queue< std::function<void()> > tasks;</p>
- [code]// synchronization
- std::mutex queue_mutex;
- std::condition_variable condition;
- bool stop;
复制代码 };
// the constructor just launches some amount of workers
inline ThreadPool::ThreadPool(size_t threads)
: stop(false)
{
for(size_t i = 0;i |