线程池 pthread pool
线程池技术思路:
一般采用预创建线程技术,也就是提前把需要用线程先创建一定数目。
这些线程提前创建好了之后,“任务队列”里面假设没有任务,那么就
让这些线程休眠,一旦有任务,就唤醒线程去执行任务,任务执行完了,
也不需要去销毁线程,直到当你想退出或者是关机时,这个时候,那么你
调用销毁线程池地函数去销毁线程。
“任务队列”是一个共享资源“互斥访问”
线程池的实现
先初始化线程池的基本内容,将线程全部创建好,所有线程都执行的是任务调配的函数
在任务调配函数中,因没有任务的加入,所有的线程都会处于休眠状态,等待条件变量。
当任务队列中添加了新的任务时,会发送唤醒线程,抢到任务的线程进入任务队列并上锁
拿出任务,在解锁,再执行。其他线程因为拿到任务继续休眠。
struct pthread_pool //线程池的实现
{
//一般会有如下成员
//互斥锁,用来保护这个“任务队列”
pthread_mutex_t lock; //互斥锁
//线程条件变量 表示“