当前位置: 技术问答>linux和unix
有没有使用过Linux下线程池技术的高手,请为我指点迷津!!!
来源: 互联网 发布时间:2015-12-30
本文导语: 需求是这样的: 在系统初始化阶段创建一个线程池,但是,我不理解的是:当每一个线程被“ 派出”执行完任务后,这个线程能否回到线程池中。我看书上说,当一个线程执行完它的例行函数后,就进入终止状态了...
需求是这样的:
在系统初始化阶段创建一个线程池,但是,我不理解的是:当每一个线程被“ 派出”执行完任务后,这个线程能否回到线程池中。我看书上说,当一个线程执行完它的例行函数后,就进入终止状态了,是否需要调用pthread_detach函数来分离它,然后系统可以回收这个线程,这样线程才能回到线程池中被重新分配其他的任务?
在系统初始化阶段创建一个线程池,但是,我不理解的是:当每一个线程被“ 派出”执行完任务后,这个线程能否回到线程池中。我看书上说,当一个线程执行完它的例行函数后,就进入终止状态了,是否需要调用pthread_detach函数来分离它,然后系统可以回收这个线程,这样线程才能回到线程池中被重新分配其他的任务?
|
线程池一个简单模型是这样的:
开始的时候,产生线程池以及一定的线程,放入等待队列中;
当有消息需要处理的时候,从线程池中取出一个线程把数据交给它来处理,这时该线程被移至工作队列,处理完毕移回等待队列,如果当前没有可用的线程,并且线程数量没有达到设定的最高上限,那么产生一批(不是1个,具体多少看你的算法)线程放入等待队列中,再分配线程来完成任务,如果已经达到了上限那么只有等待了。
如果线程池工作线程的百分比长时间过高,那么你就应该增加你的线程数量和线程上限了,如果过低那么你应该减少你的线程数量了。这个也是一个均衡算法问题,没有哪个算法比哪个好,只有适合需求的才是最好的。
开始的时候,产生线程池以及一定的线程,放入等待队列中;
当有消息需要处理的时候,从线程池中取出一个线程把数据交给它来处理,这时该线程被移至工作队列,处理完毕移回等待队列,如果当前没有可用的线程,并且线程数量没有达到设定的最高上限,那么产生一批(不是1个,具体多少看你的算法)线程放入等待队列中,再分配线程来完成任务,如果已经达到了上限那么只有等待了。
如果线程池工作线程的百分比长时间过高,那么你就应该增加你的线程数量和线程上限了,如果过低那么你应该减少你的线程数量了。这个也是一个均衡算法问题,没有哪个算法比哪个好,只有适合需求的才是最好的。