свойства и проверки thread-safity
От: sergunok  
Дата: 20.01.11 13:15
Оценка:
Есть класс, в нем есть read-write свойство. Хочу обеспечить:
(1) thread-safe доступ к значению свойства снаружи класса
(2) возможность организации крит.секций ( изнутри и снаружи класса), в которых задействовано это свойство

Целевая функция при этом — инкапсулированный и читаемый код.

Отцы ,
покритикуйте мой вариант и предложите свой:


class Test
{
  readonly object sync = new object();
  object Sync { get { return this.sync; }}
  int x;

  public int X
  {
    get
    {
      lock(this.Sync)
      {
        return this.x;
      }
    }

    set
    {
      lock(this.Sync)
      {
        this.x = value;
      }
    }
  }

  public void F() // пример крит.секции, необходимой для атомарности нескольких операций
  {
    lock(this.Sync)
    {
      if(this.X == 0)
        this.X = 100;
    }
  }
}



За счет пабликовости Sync критическую секцию можно делать аналогичным способом и снаружи класса.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.