AutoResetEvent 运用
static AutoResetEvent are = new AutoResetEvent(true);//初始化为开 static void Main(string[] args)
{
//如果这里加上这句 are.Reset(); 则会把初始化的开,改为关
for (int i = ; i < ; i++)
{
new Thread(() =>
{ are.WaitOne();//发现为开,继续执行并设置为关
Thread.Sleep();
Console.WriteLine(DateTime.Now.ToString("mm:ss"));
are.Set();//又重新设置为开 }).Start(); }
}
static AutoResetEvent are = new AutoResetEvent(false);//初始化为关 static void Main(string[] args)
{
are.Set();//这里必须先设置为开,下面are.WaitOne()才能继续执行 for (int i = ; i < ; i++)
{
new Thread(() =>
{ are.WaitOne();//发现为开,继续执行并设置为 关,如果 are 是 ManualResetEvent 的实例,则 不会 自动设置为 关
Thread.Sleep();
Console.WriteLine(DateTime.Now.ToString("mm:ss"));
are.Set();//又重新设置为开 }).Start(); }
}
static AutoResetEvent are = new AutoResetEvent(false);
static void Main(string[] args)
{
for (int i = ; i < ; i++)
{ new Thread(() =>
{ are.WaitOne(); Thread.Sleep(); Console.WriteLine(DateTime.Now.ToString("mm:ss")); }).Start(); }
are.Set();// 只能执行一个线程输出,其它阻塞;如果 are 是 ManualResetEvent 的实例,则会全部输出,因为 WaitOne 它只等一个Set信号,它不会自动设置关;
}
AutoResetEvent 运用的更多相关文章
- C#各种同步方法 lock, Monitor,Mutex, Semaphore, Interlocked, ReaderWriterLock,AutoResetEvent, ManualResetEvent
看下组织结构: System.Object System.MarshalByRefObject System.Threading.WaitHandle System.Threading.Mutex S ...
- AutoResetEvent ManualResetEvent WaitOne使用注意事项
公司还用这些老家伙没办法,用了几次这俩.每次用都要重新翻一下A片. 好好的A片楞是翻译成了禅经.把这东西弄成个玄学.微软也是吃枣药丸.参考了@风中灵药的blog.写的牛逼. 还有一些公司用到的风中灵药 ...
- 多线程AutoResetEvent
我们在线程编程的时候往往会涉及到线程的通信,通过信号的接受来进行线程是否阻塞的操作. AutoResetEvent 允许线程通过发信号互相通信.通常,此通信涉及线程需要独占访问的资源. AutoRes ...
- 多线程中的锁系统(三)-WaitHandle、AutoResetEvent、ManualResetEvent
本章主要介绍下基于内核模式构造的线程同步方式,事件,信号量. 阅读目录: 理论 WaitHandle AutoResetEvent ManualResetEvent 总结 理论 Windows的线程同 ...
- C#线程同步自动重置事件——AutoResetEvent
AutoResetEvent对象用来进行线程同步操作,AutoResetEvent类继承waitHandle类. AutoResetEvent对象有终止和非终止两种状态,终止状态是线程继续执行,非终止 ...
- C#多线程同步事件及等待句柄AutoResetEvent 和 ManualResetEvent
最近捣鼓了一下多线程的同步问题,发现其实C#关于多线程同步事件处理还是很灵活,这里主要写一下,自己测试的一些代码,涉及到了AutoResetEvent 和 ManualResetEvent,当然还有也 ...
- 多线程间通信之AutoResetEvent和ManualResetEvent的原理分析
AutoResetEvent 允许线程通过发信号互相通信. 通常,当线程需要独占访问资源时使用该类. 线程通过调用 AutoResetEvent 上的 WaitOne 来等待信号. 如果 AutoRe ...
- C#读写者线程(用AutoResetEvent实现同步)(转载)
C#读写者线程(用AutoResetEvent实现同步) 1. AutoResetEvent简介 通知正在等待的线程已发生事件.无法继承此类. 常用方法简介: AutoResetEvent(bool ...
- C# ManualResetEvent和AutoResetEvent 使用笔记
一.两者区别 1.ManualResetEvent 调用一次Set()后将允许恢复所有被阻塞线程.需手动在调用WaitOne()之后调用Reset()重置信号量状态为非终止,然后再次调用WaitOne ...
- [c#基础]AutoResetEvent
摘要 AutoResetEvent:msdn的描述是通知正在等待的线程已发生事件.此类不能被继承.也就是说它有那么一个时间点,会通知正在等待的线程可以做其它的事情了. AutoResetEvent 该 ...
随机推荐
- 单个input框上传多个文件操作
HTML页面: <div class="form-group thumb"> <label class="control-label col-xs-12 ...
- 在Nginx 下运行 Laravel5.1 的配置
一.nginx 的 vhost.conf 配置: server { listen ; server_name sub.domain.com; set $root_path '/srv/www/defa ...
- 在linux下安装Mongodb
1.到官网下载源码:mongodb-linux-x86_64-rhel55-3.2.4.gz 2.安装 创建用户组.用户.目录 [root@hadoop1 ~]# groupadd mongodb [ ...
- STM32F4_USART配置及细节描述
Ⅰ.概述 关于USART串口通信,可以说是MCU的标配.不管是在实际项目应用中,还是在开发过程中,它都起着很重要的作用. 在项目应用中我们常常使用UART串口进行通信,根据通信的距离及稳定性,还选择添 ...
- MongoDB 学习笔记(二)—— MongoDB Shell
MongoDB自带一个JavaScript shell 可以从命令行中与MongoDB交互,功能非常强大.如在上一节最后一张图所看到,可以执行JavaScript程序. 运行Shell 前提是启动Mo ...
- 一个朋友js图表开发遇到的问题 解决思路c和js
引言 不求知道一切, 只求发现一件 -- 乔治·西蒙·欧姆 附注:那些存在于梦幻中的事迹,那些儿时梦中的人物,每每看起,都觉得 .哎 .... 岁月 ... 一直在努力 ... ...
- 用Python作GIS之五:从示例入手—example函数
进入STARS后,最简单的学习方法就是演示示例数据.对于源码的分析也可以从这里入手. 以下为出发菜单项“Example Project”的函数example:def example(se ...
- Go安装
http://www.linuxidc.com/Linux/2015-02/113159.htm https://github.com/astaxie/beego http://www.sizeofv ...
- 关于Swift中实现Lazy initialize的方式
在oc中我们通过 -(CardMatchingGame *)game { if(!_game) _game=[[CardMatchingGame alloc] initWithCardCount:[s ...
- [转]p2p端口映射工具 dog-tunnel
[转]p2p端口映射工具 dog-tunnel http://www.oschina.net/p/dog-tunnel 狗洞是一个高速的 P2P 端口映射工具,同时支持Socks5代理. 0.5版后开 ...