非常好,这把锁有问题,但我不明白那是什么。我非常怀疑下面的例子没有很好地锁定。那么可能是什么问题呢?
class example
{
object locker = new object();
void start()
{
for (int i = 0; i < 1000; i++)
{
(new Thread(dostuff)).Start();
}
}
void dostuff()
{
lock (locker)
{
//dosomething
}
}
}
最佳答案
看起来您正在启动 1000 个线程,然后锁定每个线程。这意味着 dostuff 中的代码(位于锁定部分)将按顺序执行,而不是同时执行。
正如所写,直接在 for 循环中调用 dostuff() 会更有效。
关于c# - 这把锁有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3462613/