Github开源项目源码阅读(progschjThreadPool)

打印 上一主题 下一主题

主题 831|帖子 831|积分 2493

项目地址:https://github.com/progschj/ThreadPool
项目源码:
  1. #ifndef THREAD_POOL_H
  2. #define THREAD_POOL_H
  3. <h1 id="include-vector">include <vector></h1>
  4. <h1 id="include-queue">include <queue></h1>
  5. <h1 id="include-memory">include <memory></h1>
  6. <h1 id="include-thread">include <thread></h1>
  7. <h1 id="include-mutex">include <mutex></h1>
  8. <h1 id="include-condition_variable">include <condition_variable></h1>
  9. <h1 id="include-future">include <future></h1>
  10. <h1 id="include-functional">include <functional></h1>
  11. <h1 id="include-stdexcept">include <stdexcept></h1>
  12. <p>class ThreadPool {
  13. public:
  14. ThreadPool(size_t);
  15. template<class F, class... Args>
  16. auto enqueue(F&& f, Args&&... args)
  17. -> std::future<typename std::result_of<F(Args...)>::type>;
  18. ~ThreadPool();
  19. private:
  20. // need to keep track of threads so we can join them
  21. std::vector< std::thread > workers;
  22. // the task queue
  23. std::queue< std::function<void()> > tasks;</p>
  24. [code]// synchronization
  25. std::mutex queue_mutex;
  26. std::condition_variable condition;
  27. bool stop;
复制代码
};

// the constructor just launches some amount of workers
inline ThreadPool::ThreadPool(size_t threads)
:   stop(false)
{
for(size_t i = 0;i
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

徐锦洪

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表