【发布时间】:2021-08-01 15:55:13
【问题描述】:
考虑一下:
lock (lock1)
{
lock (lock2)
{
// ...
}
}
lock2 在这里有影响(开销)吗?
【问题讨论】:
-
无竞争锁很便宜。从你的 sn-p 来看,不可能说
lock2是否会被竞争 -
这与手头的问题有点无关,但是如果您有这样的嵌套锁,请绝对确定您始终以相同的顺序锁定它们。如果有任何机会一个线程获得 lock2 然后尝试获得 lock1 而另一个线程已经持有它并正在等待 lock2,那么你就会陷入死锁。
-
累积。到these 性能测试,即使是无竞争的锁“仍然可以使一个小型非平凡算法的执行时间增加一倍”
-
这是一个很好的问题。太糟糕了,它被一些触发快乐的版主关闭了。我很想看到一个深思熟虑的答案,但我想现在不可能。
-
@Olivier: 嗯,他有另一个机会提供它
标签: c# multithreading performance locking