个人理解这个应该就相当于一个旗标,在不同线程之间创建一个都可以使用的bool量

AutoResetEvent 常常被用来在两个线程之间进行信号发送,两个线程共享相同的AutoResetEvent对象,线程可以通过调用AutoResetEvent对象的WaitOne()方法进入等待状态,waitone可以有一个等待时间参数,然后另外一个线程通过调用AutoResetEvent对象的Set()方法取消等待的状态,通过reset()恢复

class Program{const int count = 10;//赋值为false也就是没有信号static AutoResetEvent myResetEvent = new AutoResetEvent(false);static int number;static void Main(string[] args){Thread thread = new Thread(funThread);thread.Name = "QQ";thread.Start();for (int i = 1; i < count; i++){Console.WriteLine("first number: {0}",i);number = i;//这里是设置为有信号myResetEvent.Set();Thread.Sleep(2000);}thread.Abort();}static void funThread(){while (true){//执行到这个地方时,会等待set调用后改变了信号才接着执行myResetEvent.WaitOne();Console.WriteLine("end {0} number: {1}", Thread.CurrentThread.Name, number);}}}

ManualResetEvent的使用和效果和AutoResetEvent是一样的,不同的是AutoResetEvent set后,当某个线程里有waitone接受后,autorestevent又变成set之前的状态,即其他线程的waitone仍在等待,而manualrestevent set之后,其他线程的waitone都不在等待,除非手动调用manualresetevent的Reset()。

参考:
https://www.cnblogs.com/fangyz/p/5040206.html

C# AutoResetEvent / ManualResetEvent相关推荐

  1. autoresetevent java_[原创]AutoResetEvent, ManualResetEvent的Java模拟

    AutoResetEvent, ManualResetEvent是C#中常用的线程同步方法,在Java中可以模拟,AutoResetEvent使用Semaphore,增加的是许可证数量,程序里只有一个 ...

  2. C# 线程的挂起与唤醒 (AutoResetEvent,ManualResetEvent)

    如果说C#和C++有什么不同,博主不得不说,对于异步的支持程度是C#的一一个伟大的进步. 其实早期的C++都没有异步,并发的概念.博主第一次使用C++创建异步程序的时候,是使用boost库的内容进行实 ...

  3. .NET AutoResetEvent ManualResetEvent 信号机制以及Semaphore

    1.当多个线程在等待一个 AutoResetEvent的时候,每次调用AutoResetEvent.Set()方法只会唤醒一个线程 2.当多个线程在等待一个ManualResetEvent的时候,每次 ...

  4. 【深度好文】多线程之WaitHandle--派生EventWaitHandle事件构造-》AutoResetEvent、ManualResetEvent...

    AutoResetEvent/ManualResetEvent 都是继承自 EventWaitHandle ,EventWaitHandle继承自WaitHandle. 在讨论这个问题之前,我们先了解 ...

  5. CLR Via C# 3rd 阅读摘要 -- Chapter 28 – Primitive Thread Synchronization Constructs

    Class Libraries and Thread Safety 线程同步是用来避免多个线程同时访问共享数据时出现冲突: 线程同步的障碍: 1.极其乏味易错: 2.锁严重影响性能: 3.线程同步锁在 ...

  6. 细说C#多线程那些事 - 线程同步和多线程优先级

    上个文章分享了一些多线程的一些基础的知识,今天我们继续学习. 一.Task类 上次我们说了线程池,线程池的QueueUserWorkItem()方法发起一次异步的线程执行很简单 但是该方法最大的问题是 ...

  7. C# 实现多线程的同步方法详解

    本文主要描述在C#中线程同步的方法.线程的基本概念网上资料也很多就不再赘述了.直接接入 主题,在多线程开发的应用中,线程同步是不可避免的.在.Net框架中,实现线程同步主要通过以下的几种方式来实现,在 ...

  8. 【转】1.4异步编程:轻量级线程同步基元对象

    开始<异步编程:同步基元对象(下)> 示例:异步编程:轻量级线程同步基元对象.rar 在<异步编程:线程同步基元对象>中我介绍了.NET4.0之前为我们提供的各种同步基元(包括 ...

  9. 【转】1.3异步编程:线程同步基元对象

    开始<异步编程:同步基元对象(上)> 示例:异步编程:线程同步基元对象.rar 如今的应用程序越来越复杂,我们常常需要多线程技术来提高我们应用程序的响应速度.每个线程都由自己的线程ID,当 ...

最新文章

  1. JakartaEE Exception: Invalid bound statement (not found): com.mazaiting.blog.dao.UserDao.selectUs...
  2. 哈希函数的原理及应用
  3. MVC基于角色权限控制--用户管理
  4. 全国计算机一级wps网络,全国计算机一级《WPS》考试试题及答案
  5. 论:CMMI项目策划方法(PP)
  6. android studio——替换全局的某个字符串
  7. Android开发面试题之Activity启动模式讲解总结
  8. JAVA 基础3-数组
  9. php获取当前世界,php获取网站alexa世界流量排名代码
  10. php追加数据,php追加数据到mysql
  11. python字典的内置函数_python – 用于字典转换的特殊方法名称的内置函数
  12. 管理活动目录域服务实训_2019级酒店管理专业前厅与客房服务校外课程实训总结篇...
  13. 使用Spring框架实现数据库事务处理
  14. java线程池1001java线程池_深入浅出Java(Android )线程池ThreadPoolExecutor
  15. java数组元素的默认值_数组元素默认的初始值都是什么?
  16. [JNI] 开发基础(5)内存分配
  17. 计算机网络实验2-二层交换机的基本配置(eNSP)
  18. 软件随想录(local.joelonsoftware.com/wiki)-2001年04月21日 别让架构太空人吓到你 - Don't Let Architecture Astronauts Scar
  19. 午夜与element-ui邂逅
  20. 企业未来的发展机遇,或许在直播中

热门文章

  1. DELPHI利用WMI获取CPU参数
  2. 台北Unity开发者研讨会 笔记
  3. ffmpeg采集视频,转码成h264格式,并播放
  4. OpenCV学习笔记~VS code1.25.0.0环境中配置opencv
  5. 面试宝典-Mysql篇
  6. reg型变量怎么赋值_两个always块同时对一个reg类型变量赋值的问题
  7. Dos命令(cmd->Dos窗口)
  8. 4.68 亿个人信息泄露:2 块钱就可以查你的身份证,还能带照片!
  9. 数据结构学习记录(三)链表的定义和操作
  10. 免费进入超星图书馆小技巧 --深圳广播电视大学数字图书馆