关于.Net中ThreadPool的一些认识

来源:互联网 发布:用vba抓取网页数据 编辑:程序博客网 时间:2024/05/09 20:48

        原来没有用过.Net中的ThreadPool,只是通过一些文章和帮助了解了一下,一直以为这是一个通用的线程池类,可以实例化多个线程池。今天经过再仔细看了Msdn并作了一些测试,才发现并不是这样的。

        ThreadPool是一个系统管理的线程池,每个进程只能有一个系统管理的线程池,ThreadPool不需要实例化,可以直接调用其中的静态方法进行操作,在Msdn中关于ThreadPool的概述已经说的比较清除,就不赘述了。

        那么在什么情况下使用ThreadPool比较好呢?阅读了一些朋友关于线程的心得体会后,结合自己的体验,对于.Net中线程池的使用,我有以下观点:

         1、线程池主要用于减少因频繁创建和销毁线程带来开销,因此那些经常使用且执行时间短的线程才需要用线程池来管理,用ThreadPool即可。

         2、执行时间较长而又不经常出现的任务,可以单独开辟线程处理,这类任务使用线程池并不会带来明显的性能提升,甚至有可能造成资源浪费。

         3、执行时间较长,但经常出现的任务,需要综合考虑具体执行的时间和出现频度,以及自己编写线程管理的复杂度来衡量;一般情况下,我认为单独开辟线程就好。

         4、实际作项目时,别忘了不同的机器,性能不一样,多线程处理能力也是不一样的。

         以上只是一些粗浅的观点,有不对之处欢迎讨论和指正。