『C#基础』多线程笔记「四」线程池

现在到了关于多线最简单使用的最后一篇笔记。

无论从什么角度来看,每一项事物都应该有其所在的空间,而对于线程来说,线程池就是它所存在的空间,或者叫容器了。

关于线程池理论上的讲解,我找了几个大牛的文章链接,想要深入学习的可以去看下~

  1. http://www.cnblogs.com/jeffreyzhao/archive/2009/07/22/thread-pool-1-the-goal-and-the-clr-thread-pool.html
  2. http://www.cnblogs.com/JeffreyZhao/archive/2009/07/24/thread-pool-2-dedicate-pool-and-io-pool.html
  3. http://www.cnblogs.com/jeffreyzhao/archive/2009/10/20/thread-pool-3-lab.html
  4. http://kb.cnblogs.com/page/42531/

 

接下来,看看这个线程池是如何使用的吧!

概念:

  1. ManualResetEvent,通知一个或多个正在等待的线程已发生事件
  2. ManualResetEvent.Set(),将事件状态设置为终止状态,允许一个或多个等待线程继续
  3. ThreadPool.QueueUserWorkItem(…),将方法排入队列以便执行,并指定包含所用数据的对象。
  4. WaitHandle.WaitAll(…),等待指定数组中的所有元素都收到信号

 

说明:

如果只是从代码的使用上看,将一个方法加入线程池,只需要一行ThreadPool.QueueUserWorkItem(<方法名>),再加上一个ManualResetEvent对象,并不要忘记在方法执行完毕后,Set一下,这个就可以了。

而对于更深一个层次的使用,就需要对CLR的远行机制以及对个人所要应用的项目特性进行了解、深入了。但是这明显不符合这篇笔记的主要目的,所以也就没必要去深究它了。

如果想要更深入的了解,就去看上面已经给出的几个大牛的文章吧~

 

代码:

「官方示例」
「我的最简代码」

「我的最简代码」WorkerClass


成果:

image

posted @ 2012-03-30 11:48  莫不逢  阅读(1415)  评论(0编辑  收藏  举报