『C#基础』多线程笔记「四」线程池
2012-03-30 11:48
239 查看
现在到了关于多线最简单使用的最后一篇笔记。
无论从什么角度来看,每一项事物都应该有其所在的空间,而对于线程来说,线程池就是它所存在的空间,或者叫容器了。
关于线程池理论上的讲解,我找了几个大牛的文章链接,想要深入学习的可以去看下~
http://www.cnblogs.com/jeffreyzhao/archive/2009/07/22/thread-pool-1-the-goal-and-the-clr-thread-pool.html
/article/4583109.html
http://www.cnblogs.com/jeffreyzhao/archive/2009/10/20/thread-pool-3-lab.html
http://kb.cnblogs.com/page/42531/
接下来,看看这个线程池是如何使用的吧!
概念:
ManualResetEvent,通知一个或多个正在等待的线程已发生事件
ManualResetEvent.Set(),将事件状态设置为终止状态,允许一个或多个等待线程继续
ThreadPool.QueueUserWorkItem(…),将方法排入队列以便执行,并指定包含所用数据的对象。
WaitHandle.WaitAll(…),等待指定数组中的所有元素都收到信号
说明:
如果只是从代码的使用上看,将一个方法加入线程池,只需要一行ThreadPool.QueueUserWorkItem(<方法名>),再加上一个ManualResetEvent对象,并不要忘记在方法执行完毕后,Set一下,这个就可以了。
而对于更深一个层次的使用,就需要对CLR的远行机制以及对个人所要应用的项目特性进行了解、深入了。但是这明显不符合这篇笔记的主要目的,所以也就没必要去深究它了。
如果想要更深入的了解,就去看上面已经给出的几个大牛的文章吧~
代码:
成果:
无论从什么角度来看,每一项事物都应该有其所在的空间,而对于线程来说,线程池就是它所存在的空间,或者叫容器了。
关于线程池理论上的讲解,我找了几个大牛的文章链接,想要深入学习的可以去看下~
http://www.cnblogs.com/jeffreyzhao/archive/2009/07/22/thread-pool-1-the-goal-and-the-clr-thread-pool.html
/article/4583109.html
http://www.cnblogs.com/jeffreyzhao/archive/2009/10/20/thread-pool-3-lab.html
http://kb.cnblogs.com/page/42531/
接下来,看看这个线程池是如何使用的吧!
概念:
ManualResetEvent,通知一个或多个正在等待的线程已发生事件
ManualResetEvent.Set(),将事件状态设置为终止状态,允许一个或多个等待线程继续
ThreadPool.QueueUserWorkItem(…),将方法排入队列以便执行,并指定包含所用数据的对象。
WaitHandle.WaitAll(…),等待指定数组中的所有元素都收到信号
说明:
如果只是从代码的使用上看,将一个方法加入线程池,只需要一行ThreadPool.QueueUserWorkItem(<方法名>),再加上一个ManualResetEvent对象,并不要忘记在方法执行完毕后,Set一下,这个就可以了。
而对于更深一个层次的使用,就需要对CLR的远行机制以及对个人所要应用的项目特性进行了解、深入了。但是这明显不符合这篇笔记的主要目的,所以也就没必要去深究它了。
如果想要更深入的了解,就去看上面已经给出的几个大牛的文章吧~
代码:
「我的最简代码」WorkerClass public void Do(Object threadContext) { Console.WriteLine(Thread.CurrentThread.Name + this.WorkerName); Console.WriteLine(threadContext.ToString()); }
成果:
相关文章推荐
- 『C#基础』多线程笔记「四」线程池
- 『C#基础』多线程笔记「一」基本说明
- 黑马程序员---C#多线程基础笔记
- 『C#基础』多线程笔记「二」线程同步
- 『C#基础』多线程笔记「三」计时器
- 『C#基础』多线程笔记「三」计时器
- 『C#基础』多线程笔记「二」线程同步
- 『C#基础』多线程笔记「一」基本说明
- 『C#基础』多线程笔记「二」线程同步
- 『C#基础』多线程笔记「三」计时器
- 【C#学习笔记】基础
- C# 多线程 主线程 笔记
- 学习笔记 07----C# 基础
- C#基础班第一天笔记(vs基础操作)
- C#中一道关于多线程的基础练习题——模拟仓库存销过程
- java基础——多线程(线程池)
- C# 基础学习笔记
- IOS学习笔记 多线程基本理论基础(1)
- C# 多线程的自动管理(线程池) 基于Task的方式
- 2012-04-06 C#基础学习笔记(5)