You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中资源被锁定时其他线程的行为是怎样的?

线程锁定资源时其他线程的行为

当一个线程通过lock语句锁定某个资源对象时,其他线程的表现分两种情况:

  • 若其他线程尝试锁定同一个对象:这些线程会直接进入阻塞状态,完全空闲,不会去执行任何新任务,直到持有锁的线程执行完lock块内的代码、释放锁为止。此时线程会被操作系统挂起,直到锁可用时才会被唤醒并尝试获取锁。
  • 若其他线程锁定的是不同对象:完全不受影响,正常执行自己的逻辑,和持有锁的线程互不干扰。

要特别注意:lock是同步阻塞机制,和异步编程的逻辑完全不同。异步编程里的await会释放当前线程,让线程可以去处理其他任务;但lock阻塞时,线程会被挂起,期间不会做任何有效工作,只能等待锁释放。

C#代码示例:

lock (referenceType)
{
    // 执行需要同步的代码
}

内容的提问来源于stack exchange,提问作者user19291301

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 21:39:36