c# - .net - 锁定盒装值而不是新对象

标签 c# .net multithreading locking value-type

我最近在我正在从事的一个项目中遇到了这段代码,但我不确定它应该如何表现。

private static object _syncRoot = 1;

public void DoSomething()
{
    lock (_syncRoot)
    {
        // do stuff...
    }
}

我知道通常使用 new object() 作为锁。锁定在盒装整数上时,此锁的行为如何?如果您添加另一个具有相同值的锁会怎样?

private static object _anotherLock = 1;

public void DoSomethingElse()
{
    lock (_anotherLock)
    {
        // do stuff...
    }
}

最佳答案

lock 始终使用引用相等性。

两个不同的盒装 1 给两个不同的锁。

关于c# - .net - 锁定盒装值而不是新对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8219691/

相关文章:

c# - Dynamics AX 2009 业务连接器登录

c# - 命名空间 'Caching' 中不存在类型或命名空间名称 'System.Runtime'

multithreading - 如何使用人造丝进行枚举迭代?

python - 从另一个线程更改 kivy 属性

c# - MVVM 设置默认值

c# - 如何在 Web API 和 OData 中进行 PATCH

c# - Winforms 等待绘制直到添加控件

c# - asp.net 图像发布后未加载

.net - 将 GUID 转换为整数并返回

c# - 锁定当前线程 : Possible WTF?