Я знаю, что неправильно использовать блокировку (this)
или какой-либо общий объект.
Интересно, подходит ли это использование?
public class A
{
private readonly object locker = new object();
private List<int> myList;
public A()
{
myList = new List<int>()
}
private void MethodeA()
{
lock(locker)
{
myList.Add(10);
}
}
public void MethodeB()
{
CallToMethodInOtherClass(myList);
}
}
public class OtherClass
{
private readonly object locker = new object();
public CallToMethodInOtherClass(List<int> list)
{
lock(locker)
{
int i = list.Count;
}
}
}
Это потокобезопасно? В OtherClass
мы блокируем частный объект, поэтому, если блокировка класса A
с его частной блокировкой, может ли список по-прежнему изменяться в блоке блокировки в OtherClass
?