在论坛上见有人说有这么个经典的面试题,我也来说说,^_^
此题涉及到:多线程,同步,排他
那前面顺便讲一下两个排他应用的AutoResetEvent与ManualResetEvent的区别
AutoResetEvent:通知正在等待的线程已发生事件
ManualResetEvent :通知一个或多个正在等待的线程已发生事件
它们常用的三个事件有:
1)Set(); 2)ReSet(); 3)WaitOne();
字面上来说,一个是自动,一个是手动,其最跟本的区别是
一.AutoResetEvent的Set()只允许一个线程运行.也就是说AutoResetEvent的Set()方法,只会使一个线程得到运行,而使其它处于
WaitOne()状态的线程自动为ReSet()的无信号状态.
二.而ManualResetEvent 的Set()则不会使处于WaitOne()状态的线程自动为ReSet()的无信号状态.如果想其处于无信号状态,必须手动调用ReSet()方法.
//-----------------------------------------------------------------------
下面就直接给代码了