C++标准库实现线程池
时间: 2024-09-15 09:06:12 浏览: 48
c++线程池经典实现方式demo
5星 · 资源好评率100%
C++标准库并没有直接提供线程池的实现,但是从C++17版本开始,引入了`std::ThreadPool`这个类,它属于<thread>头文件,可以简化线程管理并避免频繁创建和销毁线程带来的性能开销。`std::ThreadPool`是一个模板类,允许开发者设置线程池的最大线程数,并通过提交工作单元(任务)给线程池来进行异步计算。
使用`std::ThreadPool`的基本步骤如下:
1. 创建线程池实例:
```cpp
std::ThreadPool thread_pool(4); // 创建一个包含4个线程的线程池
```
2. 提交任务到线程池:
```cpp
void worker_function(int id) {
// 线程的工作内容
}
// 使用lambda表达式或函数指针提交任务
thread_pool.submit(worker_function, 0);
```
3. 关闭线程池:
```cpp
// 当不再需要线程池时,调用shutdown()停止接受新任务
thread_pool.shutdown();
// 等待所有任务完成
thread_pool.wait_for(std::chrono::seconds{0});
```
阅读全文