基于 C++ 11 实现线程池
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

基于C++11 实现线程池

项目描述:

  1. 基于可变参模板编程和引用折叠原理,实现线程池submitTask接口,支持任意任务函数和任意参数的传递;
  2. 使用future类型定制submitTask提交任务的返回值;
  3. 使用map和queue容器管理线程对象和任务;
  4. 基于条件变量condition_variable和互斥锁mutex实现任务提交线程和任务执行线程间的通信机制;
  5. 支持fixed和cached模式的线程池定制。

使用示例:

#include <iostream>
#include <future>
#include "ThreadPool.h" // 引入头文件

using namespace std;

int sum1(int a, int b) {
    return a + b;
}

int main() {
    ThreadPool pool; // 定义线程池对象
    pool.start(); // 启动线程池
    future<int> res = pool.submitTask(sum1, 10, 20); // 提交异步任务

    cout << res.get() << endl; // 打印结果

    return 0;
}

更多进阶用法详见头文件中的注释说明。