Linux平台下实现的线程池
-
or_threadpool
线程池的实现原理基本上就是生产者与消费者模型的扩展,即刚开始开出一定数量的线程,以基本生产者消费者模型 为基本原理,不断使用这些线程从"任务队列"中取出任务进行处理,本线程池中的线程通过竞争关系取任务进行处理.
- 定义封装了Task类,具体的任务实现可以通过继承该Task类进行实现.
- 定义Threadpool线程池类,类内定义了AddTask(添加任务),stop(停止销毁线程池),Task* take(取任务),createthread(创造线程)和线程回调函数等成员,其中在运用pthread_create创建线程时需要第三个参数必须指向一个静态函数.
- 对线程的同步机制进行了封装,包括信号量sem,互斥锁Locker以及条件变量cond类,方便以后的调用.
- dy_threadpool
(1) 让不同的线程完成不同的任务;把任务派生成一个基类,每个任务派生出一个任务参数.
(2) 把多个线程管理起来,通过创建一个管理者线程类.该线程实现的功能有:
1.知道所有线程的状态,这样有新任务来时可以把任务分配给有资源的线程来处理;
2.维护一定数量的线程,当线程数大于规定的线程数之后,会对多余的线程进行回收;
(3) 当任务数大于当前线程数量时,管理器会自动扩充线程,以保证每个任务都有处理的线程.
(4) 对于Locker类中的线程同步机制,还是采用上一个线程池封装好的Locker.h文件里的内容.
(5) 工作线程通过继承thread的抽象类来实现