造轮子啊造轮子,造轮子啊造轮子。
项目地址: https://github.com/EricDDK/ThreadPool
线程池实现也是很简单,就是Pool管理一个vector,vector里存放着n个Task对象,对象中包含着一根线程在跑,平时完全sleep,当Pool查询最少的Task队列并插入一条任务给Task对象的时候,线程自动唤醒,跑完Task执行回调,然后再检测再等待,如果发现队列是空就继续sleep。
这里检测不是用的while死循环,而且是异步的,休眠时没有上下文切换,效率还是可以的。