Требуется ли блокировка доступа к bool или это Overkill

У меня есть класс, который разработан в основном как класс POCO, с различными потоками и задачами, которые могут читать его значения, и только другие только время от времени обновляют эти значения. Это кажется идеальным сценарием для ReaderWriterLockSlim.

В классе возникает вопрос: если свойство, которое должно быть потокобезопасным, если свойство является логическим, является ли это излишним? что произойдет, если это int? DateTime?

public class MyClass
{
  private bool _theValue = false;
  private ReaderWriterLockSlim _theValueLock = new ReaderWriterLockSlim();

  public bool TheValue
  {
    get
    {
      bool returnVal = false;
      try
      {
        _theValueLock.EnterReadLock();
        returnVal = _theValue;
      }
      finally
      { _theValueLock.ExitReadLock(); }
      return returnVal;
    }
    set
    {
      try
      {
        _theValueLock.EnterWriteLock();
        _theValue = value;
      }
      finally
      { _theValueLock.ExitWriteLock(); }
    }
  }
}

Неужели весь этот код избыточен, и простого ...

public bool TheValue { get; set; }

... будет достаточно? Поскольку тип - это bool, безопасно ли это? если да, то когда это станет небезопасным? байт? int? DateTime?

edit
Моя основная архитектура должна иметь это состояние хранилища классов. Может быть, есть одна служба, отвечающая за запись в этот класс. Все остальные классы могут читать и выполнять свою логику на основе этих данных состояния. Я сделаю все возможное, чтобы убедиться, что все данные согласованы, но, как указано ниже, меня больше всего беспокоила атомарность и раздробленность данных.

Заключение
Спасибо всем за их ответ, все были ценными. Меня больше всего беспокоила атомарность операций записи / чтения (т.е. беспокойство по поводу расщепления). Для платформы .NET, если рассматриваемая переменная является встроенным типом значения, размер которого меньше 4 байтов, то чтение и запись являются атомарными (например, short и int подходят, long и double - нет).

12
задан Andre 22 June 2011 в 16:44
поделиться