WEB开发网
开发学院软件开发C语言 C#多线程编程(3):线程池ThreadPool 阅读

C#多线程编程(3):线程池ThreadPool

 2010-09-30 21:09:33 来源:WEB开发网   
核心提示: 获取系统变量信息完毕,Id:1864,ProcessName:mysqld,StartTime:2010-1-118:23:25Id:3732,ProcessName:HTime,StartTime:2010-1-118:32:16Id:1328,ProcessName:spoolsv,Star

获取系统变量信息完毕。

Id:1864,ProcessName:mysqld,StartTime:2010-1-11 8:23:25
Id:3732,ProcessName:HTime,StartTime:2010-1-11 8:32:16
Id:1328,ProcessName:spoolsv,StartTime:2010-1-11 8:23:23
Id:3908,ProcessName:ctfmon,StartTime:2010-1-11 8:32:19
Id:3640,ProcessName:cmd,StartTime:2010-1-11 15:43:04
Id:1488,ProcessName:notepad,StartTime:2010-1-11 15:30:48
Id:3668,ProcessName:conime,StartTime:2010-1-11 15:27:22
Id:964,ProcessName:svchost,StartTime:2010-1-11 8:23:22
Id:1408,ProcessName:svchost,StartTime:2010-1-11 8:23:23
Id:1140,ProcessName:svchost,StartTime:2010-1-11 8:23:22
Id:1940,ProcessName:sqlbrowser,StartTime:2010-1-11 8:23:25
Id:1672,ProcessName:MsDtsSrvr,StartTime:2010-1-11 8:23:24
Id:3540,ProcessName:explorer,StartTime:2010-1-11 8:32:14
Id:3268,ProcessName:wps,StartTime:2010-1-11 14:08:00
Id:1568,ProcessName:inetinfo,StartTime:2010-1-11 8:23:24
Id:588,ProcessName:csrss,StartTime:2010-1-11 8:23:17
Id:3704,ProcessName:360tray,StartTime:2010-1-11 8:32:16
Id:1028,ProcessName:svchost,StartTime:2010-1-11 8:23:22
Id:2184,ProcessName:mqtgsvc,StartTime:2010-1-11 8:23:28
Id:2628,ProcessName:Reflector,StartTime:2010-1-11 15:04:35
Id:3872,ProcessName:devenv,StartTime:2010-1-11 15:26:51
Id:204,ProcessName:ThreadPoolDemo,StartTime:2010-1-11 15:43:26
Id:664,ProcessName:winlogon,StartTime:2010-1-11 8:23:20
Id:840,ProcessName:dexplore,StartTime:2010-1-11 14:50:21
Id:3900,ProcessName:rundll32,StartTime:2010-1-11 8:32:18
Id:1636,ProcessName:mdm,StartTime:2010-1-11 8:23:24
Id:1012,ProcessName:RavMonD,StartTime:2010-1-11 8:23:22
Id:1100,ProcessName:svchost,StartTime:2010-1-11 8:23:22
Id:476,ProcessName:smss,StartTime:2010-1-11 8:23:14
Id:920,ProcessName:svchost,StartTime:2010-1-11 8:23:21
Id:716,ProcessName:services,StartTime:2010-1-11 8:23:21
Id:3052,ProcessName:ThreadPoolDemo.vshost,StartTime:2010-1-11 15:42:27
Id:1448,ProcessName:msdtc,StartTime:2010-1-11 8:23:23
Id:180,ProcessName:mqsvc,StartTime:2010-1-11 8:23:25
Id:2512,ProcessName:iexplore,StartTime:2010-1-11 14:52:29
Id:1888,ProcessName:nvsvc32,StartTime:2010-1-11 8:23:25
Id:728,ProcessName:lsass,StartTime:2010-1-11 8:23:21
Id:2240,ProcessName:alg,StartTime:2010-1-11 8:23:28
Id:3808,ProcessName:jusched,StartTime:2010-1-11 8:32:17
Id:3128,ProcessName:RsTray,StartTime:2010-1-11 8:32:17
Id:1992,ProcessName:svchost,StartTime:2010-1-11 8:23:25
Id:2944,ProcessName:Foxit Reader,StartTime:2010-1-11 14:08:48
Id:4,ProcessName:System,StartTime:1601-1-1 8:00:00
Id:1604,ProcessName:jqs,StartTime:2010-1-11 8:23:24
ProcessName:Idle

获取进程信息完毕。

OK

在上面的代码中我们使用了线程池,并让它执行了两个任务,一个是列出系统当前所有环境变量的值,一个是列出系统当前运行的进程名和它们的启动时间。

当然,优点和缺点总是同时存在的,使用ThreadPool也有一些缺点,使用线程池有如下缺点:

1、一旦加入到线程池中就没有办法让它停止,除非任务执行完毕自动停止;

2、一个进程共享一个线程池;

3、要执行的任务不能有返回值(当然,线程中要执行的方法也是不能有返回值,如果确实需要返回值必须采用其它技巧来解决);

4、在线程池中所有任务的优先级都是一样的,无法设置任务的优先级;

5、不太适合需要长期执行的任务(比如在Windows服务中执行),也不适合大的任务;

6、不能为线程设置稳定的关联标识,比如为线程池中执行某个特定任务的线程指定名称或者其它属性。

如果我们要面临的情况正好是线程池的缺点,那么我们只好继续使用线程而不是线程池。不过在某些情况下使用线程池确实可以带来很多方便的,比如在WEB服务器中,可以使用线程池来处理来自客户端的请求,可以以比较高的性能运行。

出处:http://zhoufoxcn.blog.51cto.com/792419/263696

上一页  1 2 3 4 

Tags:线程 编程 线程

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接