Linux下设计一个简单的线程池

发表于:2011-8-03 10:26

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:hinyunsin(CSDNblog)    来源:51Testing软件测试网采编

#
Linux

  定义

  什么是线程池?简单点说,线程池就是有一堆已经创建好了的线程,初始它们都处于空闲等待状态,当有新的任务需要处理的时候,就从这个池子里面取一个空闲等待的线程来处理该任务,当处理完成了就再次把该线程放回池中,以供后面的任务使用。当池子里的线程全都处理忙碌状态时,线程池中没有可用的空闲等待线程,此时,根据需要选择创建一个新的线程并置入池中,或者通知任务线程池忙,稍后再试。

  为什么要用线程池?

  我们说,线程的创建和销毁比之进程的创建和销毁是轻量级的,但是当我们的任务需要大量进行大量线程的创建和销毁操作时,这个消耗就会变成的相当大。比如,当你设计一个压力性能测试框架的时候,需要连续产生大量的并发操作,这个是时候,线程池就可以很好的帮上你的忙。线程池的好处就在于线程复用,一个任务处理完成后,当前线程可以直接处理下一个任务,而不是销毁后再创建,非常适用于连续产生大量并发任务的场合。

  线程池工作原理

  线程池中每一个线程的工作过程如下:

图 1:线程的工作流程

  线程池的任务就在于负责这些线程的创建,销毁和任务处理参数传递、唤醒和等待。

  1、创建若干线程,置入线程池

  2、任务达到时,从线程池取空闲线程

  3、取得了空闲线程,立即进行任务处理

  4、否则新建一个线程,并置入线程池,执行3

  5、如果创建失败或者线程池已满,根据设计策略选择返回错误或将任务置入处理队列,等待处理

  6、销毁线程池

图 2:线程池的工作原理

71/71234567>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号