【问题标题】:C#: What happens if I try to lock a locked object? [duplicate]C#:如果我尝试锁定一个锁定的对象会发生什么? [复制]
【发布时间】:2017-07-30 06:25:10
【问题描述】:

例如——

Object obj = new Object();

然后我用lock(obj)锁定一个部分

我也锁定了其他部分lock(obj)

如果一个线程在第一个部分,是否意味着另一个部分也被锁定?

【问题讨论】:

    标签: c# multithreading locking


    【解决方案1】:

    锁定是在对象上完成的,而不是在代码的部分或位置上。如果一个线程在第一个位置获取锁,则第二个线程不能在任何地方获取它 - 既不能在同一个位置,也不能在任何其他位置。

    【讨论】:

    • 所以如果假设我写在其他位置:while(true) { lock(obj) ....} 其他线程将尝试获取锁,直到第一个线程解锁?这像等待/脉冲吗?
    • 你不需要也不应该使用 while 循环
    猜你喜欢
    • 1970-01-01
    • 2015-02-16
    • 1970-01-01
    • 2016-08-26
    • 2021-09-02
    • 2012-08-15
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    相关资源
    最近更新 更多