我最近在我正在从事的一个项目中遇到了这段代码,但我不确定它应该如何表现。
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/