C++ 线程池在多个类中共用
时间: 2024-09-10 20:22:28 浏览: 45
在C++中,线程池是一种常用的技术,用于管理一组预先创建的线程,以便于高效地执行大量任务。当多个类需要共享一个线程池时,通常的做法是:
1. **独立的线程池实例**: 每个类可以拥有自己独立的线程池实例,这样每个类都对线程资源有单独的控制,互不影响。
```cpp
class ThreadPoolClass {
public:
ThreadPoolClass(size_t poolSize) : threads(poolSize) {}
private:
std::vector<std::thread> threads;
// 添加线程池方法...
};
// 在需要的地方使用
ThreadPoolClass threadPool(5);
```
2. **共享全局线程池**: 如果所有类都需要访问相同的线程池,可以在整个程序中创建一个全局的线程池,并通过静态成员函数提供给需要的类。
```cpp
class GlobalThreadPool {
public:
static void executeTask(std::function<void()> task);
private:
static std::vector<std::thread> threads;
// 初始化线程池...
};
```
然后在类里调用`GlobalThreadPool::executeTask`来提交工作。
**相关问题--:**
1. 使用线程池能带来哪些性能提升?
2. 如何保证线程池的安全性和线程之间的协作?
3. 当线程池大小不再适应变化的任务负载时,如何调整线程数?
阅读全文