这是一个用现代c++编写的高效线程池库,旨在提供强大的任务并发执行能力,简化多线程编程。项目参考progschj/ThreadPool的框架,但是简化了许多,但仍然实现了类似的基本功能,性能也近似。
- 灵活的线程管理:
- 通过构造函数创建线程池时,可以指定初始线程数量。
- 支持在运行时动态增加或减少线程数量,以适应不同的负载需求。
- 任务提交与结果获取:
- 使用
submit方法向线程池提交任务(支持std::function封装的任何可调用对象)。 submit方法返回std::future对象,允许您异步获取任务的返回值,并优雅地处理任务执行过程中可能抛出的异常。
- 使用
- 并发安全与同步:
- 内部使用
std::queue维护任务队列,确保任务的先进先出处理。 - 采用
std::shared_mutex和std::condition_variable_any等标准库组件进行精细的线程同步,确保在多线程环境下的数据一致性和并发安全。
- 内部使用
- 生命周期控制:
- 支持线程池的暂停 (
pause()) 和恢复 (resume()),方便控制任务执行流程。 - 提供优雅关闭 (
shutdown()) 机制,等待所有已提交任务完成。
- 支持线程池的暂停 (
编译成功后,您将在 build 目录下找到可执行文件和库文件。
本项目采用 MIT 许可证发布。详细内容请参阅 LICENSE 文件。
本项目代码部分参考了 progschj/ThreadPool 项目,测试部分完全使用progschj/ThreadPool 项目提供的测试,该项目采用 Zlib 许可证。