给定以下类:
class x
{
Object lockOne = new Object();
Object lockTwo = new Object();
List<Something> listOne = new List<Something>();
List<Something> listTwo = new List<Something>();
void MethodOne()
{
lock(lockOne)
{
// some operation on listOne
}
}
void MethodTwo()
{
lock(lockTwo)
{
// some operation on listTwo
}
}
}
假设 MethodOne()
和 MethodTwo()
可以从不同线程同时调用,使用两个锁定对象是否正确,注意 listOne
和 listTwo
无论如何都不相关。锁中涉及的唯一操作是上面注释中指定的操作。
最佳答案
是的,这是正确的。它避免了仅仅因为另一个列表正在处理而不必要地锁定一个列表。
关于c# - 需要多个锁对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14813780/