1 / 3
文档名称:

什么是线程池.doc

格式:doc   页数:3页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

什么是线程池.doc

上传人:xxj16588 2016/3/28 文件大小:0 KB

下载得到文件列表

什么是线程池.doc

相关文档

文档介绍

文档介绍:什么是线程池什么是线程池应用程序可以有多个线程,这些线程在休眠状态中需要耗费大量时间来等待事件发生。其他线程可能进入睡眠状态, 并且仅定期被唤醒以轮循更改或更新状态信息, 然后再次进入休眠状态。为了简化对这些线程的管理, .NET 框架为每个进程提供了一个线程池,一个线程池有若干个等待操作状态, 当一个等待操作完成时, 线程池中的辅助线程会执行回调函数。线程池中的线程由系统管理, 程序员不需要费力于线程管理,可以集中精力处理应用程序任务。线程池是一种多线程处理形式,处理过程中将任务添加到队列, 然后在创建线程后自动启动这些任务。, 以默认的优先级运行, 并处于多线程单元中. 如果某个线程在托管代码中空闲( 如正在等待某个事件),则线程池将插入另一个辅助线程来使所有处理器保持繁忙. 如果所有线程池线程都始终保持繁忙, 但队列中包含挂起的工作, 则线程池将在一段时间后创建另一个辅助线程但线程的数目永远不会超过最大值. 超过最大值的线程可以排队, 但他们要等到其他线程完成后才启动在什么情况下使用线程池? 1. 单个任务处理的时间比较短 2. 将需处理的任务的数量大使用线程池的好处: 1. 减少在创建和销毁线程上所花的时间以及系统资源的开销 2. 如不使用线程池,有可能造成系统创建大量线程而导致消耗完系统内存以及”过度切换”。何时不使用线程池线程: 如果需要使一个任务具有特定优先级如果具有可能会长时间运行(并因此阻塞其他任务)的任务如果需要将线程放置到单线程单元中(线程池中的线程均处于多线程单元中) 如果需要永久标识来标识和控制线程,比如想使用专用线程来终止该线程,将其挂起或按名称发现它 类实现了线程池, 这是一个静态类, 它提供了管理线程的一系列方法 方法在线程池中创建一个线程池线程来执行指定方法( 用委托 WaitCallBack 表示), 并将该线程排入线程池的队列等待执行。 public static BooleanQueueUserWorkItem(WaitCallbackwc,Object state); 应用范围 1、需要大量的线程来完成任务, 且完成任务的时间比较短。 WEB 服务器完成网页请求这样的任务,使用线程池技术是非常合适的。因为单个任务小, 而任务数量巨大, 你可以想象一个热门网站的点击次数。但对于长时间的任务,比如一个 连接请求,线程池的优点就不明显了。因为 会话时间比线程的创建时间大多了。 2 、对性能要求苛刻的应用,比如要求服务器迅速响应客户请求。 3、接受突发性的大量请求, 但不至于使服务器因此产生大量线程的应用。突发性大量客户请求, 在没有线程池情况下, 将产生大量线程, 虽然理论上大部分操作系统线程数目最大值不是问题, 短时间内产生大量线程可能使内存到达极限,并出现"OutOfMemory" 的错误。为什么需要线程池目前的大多数网络服务器,包括 Web 服务器、 Email 服务器以及数据库服务器等都具有一个共同点, 就是单位时间内必须处理数目巨大的连接请求,但处理时间却相对较短。传统多线程方案中我们采用的服务器模型则是一旦接受到请求之后, 即创建一个新的线程, 由该线程执行任务。