在学习多线程的时候我们已经知道了像Java、C#这种更高级的语言已经提供了线程池给我们使用,我们也可以直接用就行了。但是在C/C++中,我们却没有一个现成的线程池可以用。
线程池的好处我们也都知道了,我们可以通过线程池对线程资源重用,线程的创建和销毁的开销是巨大的,而通过线程池的重用大大减少了这些不必要的开销。
正好最近在一门课程中需要用到一个发挥线程池作用地方,然而需要用pthread来维护线程,所以就找到了别的博客中的pthread线程池实现,正好学习一下线程池底层的工作原理。
原博客:https://blog.csdn.net/jcjc918/article/details/50395528
原博客中的线程池是纯C语言写的,虽然有面向对象的思想,但是用在我们别的地方代码中还是不太方便,所以我将其改造了一下,使用C++编写,更易于使用。
类定义
class PthreadPool
{
private:
pthread_mutex_t lock; // 互斥锁
pthread_cond_t notify; // 条件变量
queue<Pthreadpool_Runable> thread_queue; /