c#多线程下的进程同步SignalAndWait 使用简单说明

解释:向一个 WaitHandle 发出信号并等待另一个进入信号。

总体概述:

.NET Framework中提供一些类用于手动进行线程间的访问同步。这些类主要分为3大类别(但正如下文中会看到的这些类别划分并非绝对,某些同步机制在多个类别之间有交叉):

 1:锁定  2:通知  3:连锁操作, 那SignalAndWait   属于2 通知范围的. 通知机制是等待另一个线程的信号的所有方法的统称。

等待句柄派生自WaitHandle类,后者又派生自 MarshalByRefObject。从而等待句柄可用于跨应用程序域边界的线程同步。WaitHandle类封装了Win32的同步句柄,用于表示所有允许多个等待操作的同步对象。

通过调用WaitOne实例方法或WaitAll、WaitAny及SignalAndWait中任一个静态方法方法,可以阻塞当前线程以等待WaitHandle发出信号。

WaitHandle的派生类具有不同的线程关联。事件等待句柄(EventWaitHandle、AutoResetEvent 和 ManualResetEvent)以及信号量没有线程关联。任何线程都可以发送事件等待句柄或信号量的信号。另一方面,mutex有线程关联。拥有mutex的线程必须将其释放;而如果在不拥有mutex的线程上调用ReleaseMutex方法,则将引发异常。

实现步骤:

1:声明两个信号

   

 private static EventWaitHandle ewh;   

private static EventWaitHandle clearCount =
new EventWaitHandle(false, EventResetMode.AutoReset);

编写线程要执行的方法, 方法中加入

 

 

原文地址:https://www.cnblogs.com/zuochanzi/p/7405798.html