Безопасно ли это использование блокировки для потоков?

Я знаю, что неправильно использовать блокировку (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 ?

5
задан Martin Liversage 19 January 2012 в 10:37
поделиться