上一章我们制作了一个简单的线程池,本次将使用智能指针来管理创建的对象:各种任务和创建的线程
使用shared_ptr来管理任务和线程
首先对线程池中进行修改:
- 将BaseTask*替换为std::shared_ptr< BaseTask >
- 将线程池中的std::thread*替换为std::shared_ptr< std::thread >
- 对AddTask的逻辑稍加修改
具体改动:
1 | //void AddTask(BaseTask* Task); |
在其它地方因为我们使用了auto自动类型推导,所以并不需要有太大变化。
希望异步获取任务的运行结果
对BaseTask类做出修改,增加promise变量以及Set和Get函数:
1 |
|
在main中进行测试
1 | int main() |
总结
至此就完成了一个功能相对完善的线程池并尽可能的减少了内存泄漏的问题。
- 本文作者: KongXinQing
- 本文链接: https://13114987559.github.io/2024/04/08/note/C++多线程入门:完善线程池/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!