谈一谈linux下线程池
什么是线程池: 首先,顾名思义,就是把一堆开辟好的线程放在一个池子里统一管理,就是一个线程池。 其次,为什么要用线程池,难道来一个请求给它申请一个线程,请求处理完了释放线程不行么?也行,但是如果创建线程和销毁线程的时间比线程处理请求的时间长,而且请求很多的情况下,我们的CPU资源都浪费在了创建和销毁线程上了,所以这种方法的效率比较低,于是,我们可以将若干已经创建完成的线程放在一起统一管理,如果来了一个请求,我们从线程池中取出一个线程来处理,处理完了放回池内等待下一个任务,线程池的好处是避免了繁琐的创建和结束线程的时间,有效的利用了CPU资源。 按照我的理解,线程池的作用和双缓冲的作用类似,可以完成任务处理的“鱼贯”动作。 最后,如何才能创建一个线程池的模型呢,一般需要以下三个参与者: 1、线程池结构,它负责管理多个线程并提供任务队列的接口 2、工作线程,它们负责处理任务 3、任务队列,存放待处理的任务 有了三个参与者,下一个问题就是怎么使线程池安全有序的工作,可以使用POSIX中的信号量、互斥锁和条件变量等同步手段。有了这些认识,我们就可以创建自己的线程池 代码示例如下: #include <stdlib.h> #include <pthread.h> #include <unistd.h> #include <assert.h>