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

Monitor.Wait、Monitor.Pulse、Monitor.PulseAll

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

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

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

 

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

 

使用场景

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

 

 

 

posted @ 2021-08-14 16:33  旭日阳光/hjw  阅读(112)  评论(0)    收藏  举报