本项目分为两个版本,第一个版本主要使用自己设计的Reslut类和线程任务Task类,同时实现了简单的Any类和Semaphore类 用于支持从提交的任务中获取返回值,使用时需要继承Task类并重写run方法,使用受限;
第二个版本采用c++11、14、17相关的标准,利用packaged_task和future实现了获取任务返回值的功能,同时利用c++可变参数模板 和万能引用以及std::bind等, 重构了线程池submitTask接口,可以支持使用者提交任意类型的任务和不同个数的参数。
线程池支持固定线程数模式和动态线程数模式, 动态线程数模式下线程空闲时间超过60秒即回收该线程资源。
线程同步上采用了mutex互斥锁、atomic原子操作、条件变量和信号量