ManualResetEvent的理解和使用
class Program{static void Main(string[] args){//注意:ManualResetEvent可以对所有进行等待的线程进行统一控制//true-初始状态为发出信号;false-初始状态为未发出信号ManualResetEvent mre = new ManualResetEvent(false);//线程池开启10个线程for (int i = 0; i < 10; i++){int k = i;ThreadPool.QueueUserWorkItem(t =>{Console.WriteLine($"这是第{k+1}个线程,线程ID为{Thread.CurrentThread.ManagedThreadId}");//等待信号,没有信号的话不会执行后面的语句,因为初始状态是false,所以后面的语句暂时不会执行mre.WaitOne();Console.WriteLine($"第{k+1}个线程获得信号,线程ID为{Thread.CurrentThread.ManagedThreadId}");});}Thread.Sleep(5000);Console.WriteLine("\r\n 5秒后发出信号... \r\n");//Set()方法:释放信号,所有等待信号的线程都将获得信号,开始执行WaitOne()后面的语句mre.Set();Console.ReadKey();}}
执行结果如图
可见,没有信号时,WaitOne()后面的语句都不执行(被阻塞),当Set()释放信号后,所有阻塞的线程都开始继续执行。
ManualResetEvent的理解和使用相关推荐
- C# ManualResetEvent的理解和用法
ManualResetEvent是C#中一个比较常用的工具,可用于线程间通信,实现一种类似信号量的功能(不知道我这样描述是否恰当,有可能不是"类似",而"就是" ...
- 对AutoResetEvent和ManualResetEvent的理解
一.作用 AutoResetEvent和ManualResetEvent可用于控制线程暂停或继续,拥有重要的三个方法:WaitOne.Set和Reset. 这三个方法的官方定义并不好理解,什么终止.非 ...
- 个人对AutoResetEvent和ManualResetEvent的理解
仅个人见解,不对之处请指正,谢谢. 一.作用 AutoResetEvent和ManualResetEvent可用于控制线程暂停或继续,拥有重要的三个方法:WaitOne.Set和Reset. 这三个方 ...
- SqlCommand.Parameters转SqlParameter 的输出函数取值为空的坑
经过测试发现 直接循环赋值发现, SqlCommand.Parameters没指定size,但是转sqlparammeter没指定size就会导致字符串为空, 之前也尝试过拷贝,发现内存中size就是 ...
- 简单理解AutoResetEvent及ManualResetEvent
AutoResetEvent: 构造方法:AutoResetEvent对象有两个状态,有信号和无信号,在初始化时可以分别用true和false指定 WaitOne:该对象在无信号时调用WaitOne方 ...
- 深入理解C#:编程技巧总结(二)
以下总结参阅了:MSDN文档.<C#高级编程>.<C#本质论>.前辈们的博客等资料,如有不正确的地方,请帮忙及时指出!以免误导! 在上一篇 深入理解C#:编程技巧总结(一) 中 ...
- c# AutoResetEvent和ManualResetEvent
网上有很多AutoResetEvent和ManualResetEvent的详细介绍,在这里不做过多详细的解释,写下自己的一点心得留作备忘. AutoResetEvent和ManualResetEven ...
- C# AutoResetEvent / ManualResetEvent
个人理解这个应该就相当于一个旗标,在不同线程之间创建一个都可以使用的bool量 AutoResetEvent 常常被用来在两个线程之间进行信号发送,两个线程共享相同的AutoResetEvent对象, ...
- 通用解题法——回溯算法(理解+练习)
积累算法经验,积累解题方法--回溯算法,你必须要掌握的解题方法! 什么是回溯算法呢? 回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就&quo ...
最新文章
- 推荐本人微博及浅谈发博原则
- linux系统利用可执行文件的Capabilities实现权限提升
- 自动填充控件AutoCompleteExtender控件实现代码
- 全球及中国汽车后视镜行业供需分析与需求前景预测报告2022-2027年
- CS224n笔记13 卷积神经网络
- [CF706D]Vasiliy's Multiset(异或字典树)
- 实录:有钱男性的真实私生活
- hadoop hdfs空间满后重新启动不了
- 在 Mac 上如何使用时间机器备份文件?
- linux mysql 5.7.13 安装_Linux环境下mysql5.7.13安装教程
- Arcgis制作行政区划矢量文件(shp格式)
- LTE下行物理层传输机制(5)-DCI格式的选择和DCI1A
- 肩外展固定支架的规格参数介绍和使用方法
- 联想电脑尺寸在哪里看_联想电脑型号怎么查看【详细介绍】
- Pytorch聊天机器人
- Unity报错之【发布UWP显示“Could not find any supported UWP SDK installations”】
- 研究发现:“帽子”越多越高的教师,对研究生越没有用
- 电磁场与仿真软件(35)
- 浅谈数据抓取的几种方法
- 百度员工离职总结:如何做个好员工