当前位置:网站首页>C# Monitor类
C# Monitor类
2022-08-02 20:02:00 【biyusr】
lock 语句由 C# 编译器解析为使用 Monitor 类。下面的 lock 语句:
lock (obj){// synchronized region for obj}
被解析为调用 Enter() 方法,该方法会一直等待,直到线程锁定对象为止。一次只有一个线程能锁定对象,只要解除了锁定。线程就可以进入同步阶段。Monitor 类的 Exit()方法解除了锁定。编译器把 Exit() 方法放在 try 块的 finally 处理程序中,所以如果抛出了异常,就会解除该锁定。
Monitor.Enter(obj);try{// synchronized region for obj}finally{Monitor.Exit(obj);}
与 C#的 lock 语句相比,Monitor 类的主要优点是:可以添加一个等待被锁定的超时值。这样就不会无限期地等待被锁定,而可以像下面的例子那样使用 TryEnter()方法,其中给它传递一个超时值,指定等待被锁定的最长时间。如果 obj 被锁定,TryEnter() 方法就把布尔型的引用参数设置为true,并同步地访问由对象 obj 锁定的状态。如果另一个线程锁定 obj 的时间超过了 500 毫秒,TryEnter() 方法就把变量 lockTaken 设置为 false,线程不再等待,而是用于执行其他操作。也许在以后,该线程会尝试再次获得锁定。
bool _lockTaken = false;Monitor.TryEnter(_obj, 500, ref _lockTaken);if (_lockTaken){try{// acquired the lock// synchronized region for obj}finally{Monitor.Exit(obj);}}else{// didn't get the lock, do something else}
边栏推荐
- 遇上Mysql亿级优化,怎么办
- 笑话:如果你在河边等待得足够久,你会看到你的敌人的尸体漂过,是怎么翻译出来的?
- 力扣每日一题-第46天-344. 反转字符串
- SQL Server安装教程
- 7月29-31 | APACHECON ASIA 2022
- Fiddle设置接口数据用指定工具查看;Sublime Text设置json数据格式化转换
- Translate My Wonderful | July Moli Translation Program Winners Announced
- 训练双塔检索模型,可以不用query-doc样本了?明星机构联合发文
- 奥特学园ROS笔记--7(289-325节)
- 六石管理学:入门机会只有一次,先把产品做好
猜你喜欢

Lvm逻辑卷

What is a Field Service Management System (FSM)?what is the benefit?

J9数字货币论:识别Web3新的稀缺性:开源开发者

GNN教程:图神经网络基础知识!

牛客题目——滑动窗口的最大值、矩阵最长递增路径、顺时针旋转矩阵、接雨水问题

广东省数字经济发展指引 1.0之建成数据安全保障体系

模板的进阶

J9 Digital Currency Theory: Identifying Web3's New Scarcity: Open Source Developers

Electron User Guide Beginning Experience

「面试必会」这应该是最有深度的TCP三次握手、四次挥手细节讲解
随机推荐
LeetCode:622. 设计循环队列【模拟循环队列】
SCANIA SCANIA OTL tag is introduced
"A daily practice, happy water problem" 1374. Generate a string with an odd number of each character
ECCV 2022 | 通往数据高效的Transformer目标检测器
六石管理学:入门机会只有一次,先把产品做好
GNN教程:图神经网络基础知识!
PG's SQL execution plan
程序员也许都缺一个“二舅”精神
所谓武功再高也怕菜刀-分区、分库、分表和分布式的优劣
4 kmiles join YiSheng group, with more strong ability of digital business, accelerate China's cross-border electricity full domain full growth
Silver circ: letter with material life insurance products should be by the insurance company is responsible for the management
J9 digital theory: the Internet across chain bridge has what effect?
信息学奥赛一本通(1257:Knight Moves)
谷歌竞价机器学习如何去理解?
译出我精彩 | 7月墨力翻译计划获奖名单公布
【数据分析】:什么是数据分析?
太魔人招新啦|快来加入我们吧!
In action: 10 ways to implement delayed tasks, with code!
J9数字论:互联网跨链桥有什么作用呢?
Leetcode刷题——23. 合并K个升序链表