给定以下课程:
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
无论如何都不相关。锁定中涉及的唯一操作是上面注释中指定的操作。