栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

.NET中的锁(监控)内部实现

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

.NET中的锁(监控)内部实现

经过一些调查,我找到了问题的答案。总的来说,CodeInChaos和Henk Holterman是正确的,但是这里有一些细节。

首先,当线程开始与其他线程争用锁时,它会在尝试获取锁的同时进行自旋等待循环。所有这些操作都是在 用户模式下
执行的。然后,如果没有成功的OS内核对象

Event
创建,线程将切换到 内核模式 并等待来自this的信号
Event

因此,对我的问题的回答是:
1.更好的情况下不,但更糟糕的是(

Event
如果需要,对象会延迟创建);
2.通常,它在用户模式下工作,但是如果线程争夺锁的时间太长,则可以将线程切换到内核模式(通过Win API非托管函数调用);
3.从用户模式切换到内核模式的开销(约1000个CPU周期);
4. Microsoft声称它是类似于FIFO的“诚实”算法,但不能保证这一点。(例如,如果“等待队列”中的线程将被挂起,则将在恢复时移至队列末尾。)



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/442647.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号