Skip to content

thread_pool是一个用现代C++编写的高效线程池库,旨在提供强大的任务并发执行能力,简化多线程编程,并支持动态线程管理和异步结果获取。

License

Notifications You must be signed in to change notification settings

lhish/thread_pool

Repository files navigation

thread_pool

这是一个用现代c++编写的高效线程池库,旨在提供强大的任务并发执行能力,简化多线程编程。项目参考progschj/ThreadPool的框架,但是简化了许多,但仍然实现了类似的基本功能,性能也近似。

核心功能

  • 灵活的线程管理:
    • 通过构造函数创建线程池时,可以指定初始线程数量。
    • 支持在运行时动态增加或减少线程数量,以适应不同的负载需求。
  • 任务提交与结果获取:
    • 使用 submit 方法向线程池提交任务(支持 std::function 封装的任何可调用对象)。
    • submit 方法返回 std::future 对象,允许您异步获取任务的返回值,并优雅地处理任务执行过程中可能抛出的异常。
  • 并发安全与同步:
    • 内部使用 std::queue 维护任务队列,确保任务的先进先出处理。
    • 采用 std::shared_mutexstd::condition_variable_any 等标准库组件进行精细的线程同步,确保在多线程环境下的数据一致性和并发安全。
  • 生命周期控制:
    • 支持线程池的暂停 (pause()) 和恢复 (resume()),方便控制任务执行流程。
    • 提供优雅关闭 (shutdown()) 机制,等待所有已提交任务完成。

编译成功后,您将在 build 目录下找到可执行文件和库文件。

许可证信息

本项目采用 MIT 许可证发布。详细内容请参阅 LICENSE 文件。 本项目代码部分参考了 progschj/ThreadPool 项目,测试部分完全使用progschj/ThreadPool 项目提供的测试,该项目采用 Zlib 许可证。

About

thread_pool是一个用现代C++编写的高效线程池库,旨在提供强大的任务并发执行能力,简化多线程编程,并支持动态线程管理和异步结果获取。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published