Обеспечивает ли энергозависимая запись/чтение видимость «ближайших» полей?C#

Место общения программистов C#
Ответить
Anonymous
 Обеспечивает ли энергозависимая запись/чтение видимость «ближайших» полей?

Сообщение Anonymous »

Ответ:
Согласно примеру и объяснению здесь, все должно быть хорошо.
(Модераторам: пожалуйста, прекратите удалять эту ссылку, это официальная документация Microsoft по такому поведению и полезна для всех, кто пытается найти настоящий источник. Вы действительно хотите, чтобы я скопировал и вставил сюда весь раздел? Я попробовал опубликовать свой ответ, он тоже был удален. стоп.)

Просто простой пример. Нет необходимости объяснять lock, Interlocked и т. д.
Bool сигнализирует, доступно ли значение для состояния. состояние и логическое значение впоследствии не изменяется.

Код: Выделить всё

int state;
volatile bool stateAvailable;

Thread A:
while(!stateAvailable) { sleep }
read state

Thread B:
state = 5;
stateAvailable = true;
Гарантирует ли это, что поток A всегда будет правильно считывать состояние? Меня смущают гарантии здесь (только для этого простого примера):
  • Будет ли энергозависимая запись гарантировать, что предыдущие операции будут выполнены, а энергозависимое чтение обеспечит что последующие операции не будут выполняться, тем самым также синхронизируя состояние процессора?
  • Или изменчивая запись/чтение только будет гарантировать, что компилятор не оптимизирует проверку bool из Thread A, и это не оказывает никакого влияния на возможно устаревшее значение штат?
Если вы сможете указать мне на дубликат этого вопроса, я тоже буду признателен.

Подробнее здесь: https://stackoverflow.com/questions/756 ... rby-fields
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»