首页 > 编程语言 > 详细

线程的信号机制

时间:2015-08-03 20:34:51      阅读:231      评论:0      收藏:0      [点我收藏+]

摘自:http://www.cnblogs.com/willick/p/4177977.html  仅供参考学习

有时候你需要一个线程在接收到某个信号时,才开始执行,否则处于等待状态,这是一种基于信号的事件机制。.NET框架提供一个ManualResetEvent类来处理这类事件,它的 WaiOne 实例方法可使当前线程一直处于等待状态,直到接收到某个信号。它的Set方法用于打开发送信号。下面是一个信号机制的使用示例:

 1  //线程的信号机制
 2             #region
 3             var signal = new ManualResetEvent(false);
 4             DateTime beginTime = DateTime.Now;
 5             new Thread(() => {
 6                 Console.WriteLine("waiting for signal...");
 7                 signal.WaitOne();
 8                 signal.Dispose();
 9                 Console.WriteLine("Got signal");
10             }).Start();
11             Thread.Sleep(2000);
12             TimeSpan ts = (DateTime.Now - beginTime);
13             Console.WriteLine("已消耗啦"+ts.TotalMilliseconds);
14             signal.Set();
15 
16             Console.ReadKey();
17             #endregion

效果:

1 waiting for signal...
2 已消耗啦2003.1145
3 Got signal

当执行Set方法后,信号保持打开状态,可通过Reset方法将其关闭,若不再需要,通过Dispose将其释放。如果预期的等待时间很短,可以用ManualResetEventSlim代替ManualResetEvent,前者在等待时间较短时性能更好。信号机制非常有用,后面的日志案例会用到它。

 

未完待续。。。

 

线程的信号机制

原文:http://www.cnblogs.com/meiCode/p/4700123.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!