1 什么是线程池管理
指在多线程应用程序的初始化过程中创建线程的集合,
2 线程池设计
2.1 无需创建线程,缩短了应用程序相应时间。
2.2 在任务生存期内,不通过CLR回收线程资源。
2.3 线程池根据系统当前运行的进程,优化线程时间片。
2.4 允许启动多个线程,而不必为每个线程设置属性。
2.5 可以将线程状态作为参数传递给当前执行任务。
2.6 线程池线程数量,可以固定为一个默认最大值。
3 线程池概念
3.1 当需要线程时,为新任务重用这些线程,而不是创建新线程;当任务完成时,线程就返回线程池等待下一次分派。
线程池内线程的数量是可以固定也可不固定,根据内存大小安排和客户的请求而定。
3.2 线程池管理中的问题(设计的实现)
1 可以用线程池内的线程执行任务;当任务完成时将线程释放回池中,不能直接取消任务。
2 生存期较短的任务可以使用线程池;又大又长的任务不可以使用线程池。
3 线程池内线程的多少应该固定不变。
4 线程池不适合对线程执行不同状态变换的操作。
5 线程池不适合对线程进行优先级设定的操作。
6 每个应用程序域,只能有一个线程池与其相关联。
7 如果线程内的任务被锁定,则这个线程将不会在返回池内。可以通过编程技巧避免这种情况发生。
4 ThreadPool类
解决的问题如下:
1 处理任务项
2 处理异步I/O
3 System.Net套接字
4 处理计时器
5 代表其它线程等待
5 线程同步的类库请参考如下链接:
http://blog.youkuaiyun.com/jilm168/archive/2007/10/30/1857459.aspx