Re[2]: Многопоточность
От: MadHuman Россия  
Дата: 22.12.20 07:42
Оценка:
Здравствуйте, Философ, Вы писали:

Ф>volatile запрещает оптимизации компилятора в отношении поля. В ином случае Disposed может вернуть false там, где должен быть true, потому что false может "застрять" в регистре, куда ранее была зачитана ячейка памяти.

internal bool Disposed => _disposed != 0;


когда будет вызван гетер для Disposed — вариантов кроме как прочитать _disposed из памяти нет. не будет он из регистра читаться.
собаку может подложить кэш процессора. теоретически в локальном кэше ядра, выполняющего геттер может лежать устаревшее значение.
хотя вроде в процессорах есть довольно продвинутая система инвалидации кэшей и возможно и такой проблемы нет.
Отредактировано 22.12.2020 7:47 MadHuman . Предыдущая версия . Еще …
Отредактировано 22.12.2020 7:46 MadHuman . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.