回顾一下,前面 lock、Monitor 部分我们学习了线程锁,Mutex 部分学习了进程同步,Semaphor 部分学习了资源池限制。
这一篇将学习 C# 中用于发送线程通知的 AutoRestEvent 类。
AutoRestEvent 类
用于从一个线程向另一个线程发送通知。
微软文档是这样介绍的:表示线程同步事件在一个等待线程释放后收到信号时自动重置。
其构造函数只有一个:
构造函数里面的参数用于设置信号状态。
真糟糕的机器翻译。
常用方法
AutoRestEvent 类是干嘛的,构造函数的参数又是干嘛的?不着急,我们来先来看看这个类常用的方法:
一个简单的示例
这里我们编写一个这样的程序:
创建一个线程,能够执行多个阶段的任务;每完成一个阶段,都需要停下来,等待子线程发生通知,才能继续下一步执行。
.WaitOne()
用来等待另一个线程发送通知;.Set()
用来对线程发出通知,此时 AutoResetEvent 变成终止状态;.ReSet()
用来重置 AutoResetEvent 状态;
class Program
{
// 线程通知
private static AutoResetEvent resetEvent = new AutoResetEvent(false);
static void Main(string[] args){
// 创建线程