c# - 在 .net 中的 lock 语句中调用 Thread.Sleep()

标签 c# .net synchronization locking

我想知道在已经获得 Monitor 的线程上调用 Threa.Sleep 是否会在进入休眠之前释放锁:

object o = new object();
Montior.Enter(o);
Thread.Sleep(1000);
Monitor.Exit(o);

当线程挂起时 - 其他线程能否获取o

最佳答案

不,线程在挂起/ sleep 之前不会释放

并且在休眠线程唤醒并释放锁定对象之前,没有其他线程能够获取o

关于c# - 在 .net 中的 lock 语句中调用 Thread.Sleep(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9454472/

相关文章:

c# - 如何使用 DataContractSerializer 反序列化 XML

.net - 使用 Icon.ExtractAssociatedIcon 和 ImageList 获取完整质量的 16 x 16 图标

c# - 功能说明

java - 同步和静态同步有什么区别?

android - Gradle 同步失败 : Could not determine artifacts for com. android.support :recyclerview-v7:24. 0.0

c# - Entity Framework 返回数据库中不存在的实体

c# - WCF 与 WCF 双工与套接字

java - Java 中内部锁定提供的内存可见性保证?

C# AsyncEnumerable 运行/等待多个任务永远不会完成

c# - Excel 选择更改事件触发了两次 C#