Я использую такую конфигурацию:
- .NET framework 4.5
- Windows Server 2008 R2
- HP DL360p Gen8 (2 * Xeon E5-2640, x64)
У меня есть такое поле где-то в моей программе:
protected int HedgeVolume;
Я обращаюсь к этому полю из нескольких потоков. Я предполагаю, что, поскольку у меня многопроцессорная система, возможно, что эти потоки выполняются на разных процессорах.
Что мне делать, чтобы гарантировать, что в любое время, когда я использую это поле, самое последнее значение "прочитано"? И чтобы убедиться, что когда я "напишу" значение, он станет доступен для всех других потоков немедленно?
Что мне делать?
- просто оставить поле как есть.
- объявить его
volatile
- использовать класс
Interlocked
для доступа к полю - используйте методы .NET 4.5
Volatile.Read
,Volatile.Write
для доступа к полю. - использовать
lock
Мне нужен только самый простой способ заставить мою программу работать в этой конфигурации. Мне не нужна моя программа для работы на других компьютерах или серверах или операционных системах. Также я хочу минимальную латентность, поэтому я ищу решение быстрее, которое всегда будет работать с стандартной конфигурацией этой (многопроцессорный intel x64,.net 4.5).