c# - 'Lock' 占用 CPU 时间吗?

标签 c# .net clr

我有 6 个线程。 其中一个线程进入某个范围并打开“锁定”和所有其他线程 线程正在等待并希望进入相同的范围。

现在,其他线程是否会获得 CPU 时间?其他线程是否在线程调度中? 我知道所有其他线程都处于等待状态 - 但 CPU 将尝试让线程继续并尝试进入范围(即使范围不可访问)

最佳答案

当试图进入一个已经被占用的锁时,线程首先自旋锁一段时间,最后挂起并进入等待状态。

它们在旋转时仍然消耗 CPU 时间,但一旦等待就不再消耗 CPU 时间。

关于c# - 'Lock' 占用 CPU 时间吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9376480/

相关文章:

c# - ASP.NET在运行时显示和隐藏图像

c# - Unity3D 中是否有一种方法可以检测游戏对象位于邮筒顶部以避免渲染它

c# - 是否有通用的 InkCanvas StrokesChanged 类型的事件?

.net - 沙箱 AppDomain 的 ApplicationBase 是否应该有所不同?

programming-languages - CLR 上的功能开发

c# - 将 SignalR 与 Azure Service Fabric 结合使用

c# - 使用 Graphics.CopyFromScreen 以 150% 缩放截取屏幕截图

c# - 更新 Entity Framework 6 中的多对多导航属性,更改未保存

c# - 为什么在类中声明同名实例级静态字段时,方法作用域参数值会乱码

c# - 如何以编程方式查找 WPF 扩展子项?