c#基础知识篇-Monitor

发布时间 2023-07-09 09:11:29作者: 相遇就是有缘

作用

提供同步访问对象的机制,实现线程同步。

命名空间&程序集

命名空间:System.Threading
程序集:System.Threading.dll

常用属性&方法

Monitor.Enter(Object) 在指定对象上获取排它锁
Monitor.Exit(Object) 释放指定对象上的排它锁
Monitor.Pulse 通知等待队列中的线程锁定对象状态的更改
Monitor.PulseAll 通知所有的等待线程对象状态的更改
Monitor.TryEnter(Object) 试图获取指定对象上的排它锁
Monitor.TryEnter(Object,Boolean) 尝试获取指定对象上的排它锁,并设置一个值,指示是否得到了该锁。
Wait(Object) 释放对象上的锁并阻止当前线程,直到它重新获取该锁。

 

 

 

 

 

 

 

 

注意事项

1. Enter和Exit是常用的两个方法,使用过程中须注意,为了防止获取锁之后因程序异常导致锁无法释放的情况,需要在try-catch之后的finally结构体中释放锁(Monitor.Exit())。

2. Monitor和TryEnter区别:TryEnter不会像Enter那样阻塞执行,如果线程成功进入关键区域会返回true