Memory Model
От: Ушастый Ёж Великобритания  
Дата: 27.08.09 22:55
Оценка:
Товарищи, подскажите пожалуйста, является ли следующий код thread-safe:

class A
{
  private int _something;

  public void Foo()
  {
    _something = 1;
    Thread thread = new Thread(Bar);
    thread.Start();
    thread.Join();
    Assert(_something == 2);
  }

  private void Bar()
  {
    Assert(_something == 1);
    _something = 2;
  }
}


Другими словами, происходит ли синхронизация памяти перед стартом нового потока, и после его завершения, а так же может ли компилятор поменять местами Thread.Start/Thread.Join с другими действиями.

В джава 1.5 такие гарантии имеют место быть (т.е. все будет работать как надо), пол-дня гуглил и читал мсдн — ни слова не нашел про то, как оно работает в C#. Может кто-нибудь дать ссылку, где про это написано?

Если это важно, речь идет о .NET 2.0
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.