基于 C++ 11 实现线程池
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

пре 1 година
12345678910111213141516171819202122232425262728293031323334
  1. ## 基于C++11 实现线程池
  2. **项目描述:**
  3. 1. 基于可变参模板编程和引用折叠原理,实现线程池submitTask接口,支持任意任务函数和任意参数的传递;
  4. 2. 使用future类型定制submitTask提交任务的返回值;
  5. 3. 使用map和queue容器管理线程对象和任务;
  6. 4. 基于条件变量condition_variable和互斥锁mutex实现任务提交线程和任务执行线程间的通信机制;
  7. 5. 支持fixed和cached模式的线程池定制。
  8. **使用示例:**
  9. ```c++
  10. #include <iostream>
  11. #include <future>
  12. #include "ThreadPool.h" // 引入头文件
  13. using namespace std;
  14. int sum1(int a, int b) {
  15. return a + b;
  16. }
  17. int main() {
  18. ThreadPool pool; // 定义线程池对象
  19. pool.start(); // 启动线程池
  20. future<int> res = pool.submitTask(sum1, 10, 20); // 提交异步任务
  21. cout << res.get() << endl; // 打印结果
  22. return 0;
  23. }
  24. ```
  25. 更多进阶用法详见头文件中的注释说明。