首页 > Windows开发 > 详细

C# Monitor.Wait、Monitor.Pulse、Monitor.PulseAll

时间:2021-08-14 17:46:42      阅读:66      评论:0      收藏:0      [点我收藏+]

Monitor.Wait、Monitor.Pulse、Monitor.PulseAll

1.Monitor.Wait方法
当线程调用 Wait 时,它释放对象的锁并进入对象的等待队列,对象的就绪队列中的下一个线程(如果有)获取锁并拥有对对象的独占使用。Wait()就是交出锁的使用权,使线程处于阻塞状态,直到再次获得锁的使用权。

2.Monitor.Pulse方法
当前线程调用此方法以便向队列中的下一个线程发出锁的信号。接收到脉冲后,等待线程就被移动到就绪队列中。在调用 Pulse 的线程释放锁后,就绪队列中的下一个线程(不一定是接收到脉冲的线程)将获得该锁。pulse()并不会使当前线程释放锁。

 3.Monitor.Pulse方法
所有等待队列中的线程移到就绪队列。

 

会存在就绪队列、就绪队列、等待队列

 

使用场景

可应用于池类对象忙碌排队操作;如线程池、链接池、管道池。以下代码截图是abp vnext队rabbitmq得通道池得封装;

技术分享图片

 

 

技术分享图片

 

C# Monitor.Wait、Monitor.Pulse、Monitor.PulseAll

原文:https://www.cnblogs.com/hjwcore/p/15141124.html

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