C# ManualResetEvent 类的理解
ManualResetEvent 类
它可以通知一个或多个正在等待的线程已发生事件,允许线程通过发信号互相通信,来控制线程是否可以访问资源
常用语法含义:
- ManualResetEvent manualEvent = new ManualResetEvent(true);//为true(signaled状态),一开始就可以执行,线程不能被阻塞
- ManualResetEvent manualEvent = new ManualResetEvent(false);//为flase(nonsignaled可阻塞状态),一开始就不可以执行
- manualEvent.Reset(); //将事件状态设置为非终止状态,导致线程阻止。
- manualEvent.Set(); //将事件状态设置为终止状态,允许一个或多个等待线程继续。
- manualEvent.WaitOne ();阻塞当前线程直到别的线程调用Set方法,只有ManualResetEvent 的状态是可阻塞(nonsignaled)时,WaitOne才能真正的起到作用;
//来自于 C# ManualResetEvent 类的用法_随风吹笛的博客-CSDN博客_manualresetevent
internal class Program{private static ManualResetEvent mre = new ManualResetEvent(false);static void Main(string[] args){Console.WriteLine("启动在ManualResetEvent上阻塞的3个线程");for (int i = 0; i <= 2; i++){Thread t = new Thread(ThreadProc);t.Name = "Thread_" + i;t.Start();}Thread.Sleep(500);Console.WriteLine("当所有三个线程都启动后,按Enter键调用Set ()去释放所有线程。");Console.ReadLine();mre.Set();Thread.Sleep(500);Console.WriteLine("当ManualResetEvent被发出信号时,调用WaitOne()的线程不会阻塞。按回车键来显示这个");Console.ReadLine();for (int i = 3; i <= 4; i++){Thread t = new Thread(ThreadProc);t.Name = "Thread_" + i;t.Start();}Thread.Sleep(500);Console.WriteLine("按Enter键调用Reset(),这样线程在调用WaitOne()时就会再次阻塞。");Console.ReadLine();mre.Reset();// 启动一个等待ManualResetEvent的线程。Thread t5 = new Thread(ThreadProc);t5.Name = "Thread_5";t5.Start();Thread.Sleep(500);Console.WriteLine("\nPress Enter to call Set() and conclude the demo.");Console.ReadLine();mre.Set();Console.ReadLine();}private static void ThreadProc(){string name = Thread.CurrentThread.Name;Console.WriteLine(name + " 启动并调用mre.WaitOne()");mre.WaitOne();Console.WriteLine(name + " ends.");}}
C# ManualResetEvent 类的理解相关推荐
- C# “Thread类Suspend()与Resume()已过时” 解决方法(利用ManualResetEvent类)
C# "Thread类Suspend()与Resume()已过时" 解决方法(利用ManualResetEvent类) 参考文章: (1)C# "Thread类Suspe ...
- java类的理解_Java类该怎么理解?
感觉你对java的各种数据类型可能理解不够吧. 整体了解一下各个数据类型,你的问题就清楚了: java的基础数据类型有: byte.short.int.long.float.double.char.数 ...
- 线程 ManualResetEvent 类
Reset(): 当一个线程开始一个活动(此活动必须完成后,其他线程才能开始)时, 它调用 Reset 以将 ManualResetEvent 置于非终止状态.此线程可被视为控制 ManualRese ...
- VBA 类模块理解和使用总结
目 录 VBA 类模块理解和使用总结 一.类的概念 二.类的定义 三.类详细定义 关于封装 关于多态 关于异常 关于自定义事件 四.结论: VBA 类模块理解和使用总结 一.类的概念 记得有人总结,V ...
- AtomicInteger类的理解与使用
前言 JDK1.5之后的java.util.concurrent.atomic包里,多了一批原子处理类.AtomicBoolean.AtomicInteger.AtomicLong.AtomicRef ...
- Python中type的使用和元类的理解
"元类就是深度的魔法,99%的用户应该根本不必为此操心.如果你想搞清楚究竟是否需要用到元类,那么你就不需要它.那些实际用到元类的人都非常清楚地知道他们需要做什么,而且根本不需 ...
- python 类实例化理解
让我们以一个Foo类开始: class Foo(object):def __init__(self, x, y=0):self.x = xself.y = y 当你实例化它(即创建该类的一个新的实例) ...
- python中的类怎样理解_理解Python数据类:Dataclass fields 的概述(下)
原标题 Understanding Python Dataclasses?-?Part 2 ,作者为 Shikhar Chauhan . 这是 Python 最新的 Dataclasses 系列的第二 ...
- python中的元类_理解python中的元类
一,理解类也是对象 在python中类同样也是一种对象,只要使用关键字class,Python解释器在执行的时候就会创建一个对象,这个对象(类)自身拥有创建对象(类实例)的能力,这就是为什么他是一个类 ...
- python中的类怎样理解_深入理解Python中的元类(metaclass)
如何理解python当中的元类 把这个提到外面 class __metaclass__(type): " simple custom metaclass to block adding ne ...
最新文章
- 前端性能优化之gzip
- web页面渲染(二)
- caffe多个gpu数据合并到一起
- 5.30 Tree Traversal + Tree manipulation
- Zabbix JVM 安装
- java代码防止sql注入_动态Java代码注入
- Android 编程下的四大组件之服务(Service)
- 素数筛法求十亿内所有质数的和(C++)
- Oracle数据库的备份与恢复技术
- java mybatis 搭建_mybatis环境搭建(转载)
- FileSync文件同步更新工具
- python手机版做小游戏代码大全-20行python代码的入门级小游戏的详解
- Python PDF转图片 Word
- VS 报错“无法解析的外部符号” 情况1
- NPDP知识推送-第七章产品生周期管理(4)
- python:文件读取和存储
- 数据结构与算法: 约瑟夫问题(丢手绢)
- CoAP学习笔记(1)CoAP报文结构
- QN8035 FM收音机芯片 驱动程序
- HTTP协议与网络编程(二)HTTP消息
热门文章
- css元素背景图片自适应屏幕大小
- 地理空间搜索 ->R树索引
- typora下载百度网盘
- Word解析之Word内部结构
- ds18b20温度转换指令_使用STM32控制DS18B20温度传感器
- java面向对象之实现房屋出租系统
- 图像标注工具labelImg使用
- 昆仑通态触摸屏如何把参数由触摸屏传递到PLC_西门子PLC与触摸屏、变频器的恒压供水分享...
- 注册登录后才可以下载的源码_专注爬虫:20个精心总结爬虫项目,爬虫技术这里强(附源码)...
- 机器视觉可以应用到哪些场景中?