не создает барьер памяти, но предотвращает изменение порядка чтения и записи; барьер памяти является в некотором смысле более надежным, чем чтение или запись в изменчивых полях.
еУчебник Джозефа Албахарив качестве генераторов барьеров памяти упоминаются следующие:
C # 'slock
заявление (Monitor.Enter
/Monitor.Exit
)Все методы наInterlocked
классАсинхронные обратные вызовы, использующие пул потоков - к ним относятся асинхронные делегаты, обратные вызовы APM и продолжения задачУстановка и ожидание на сигнальной конструкцииВсе, что зависит от сигнализации, например, запуск или ожидание задачиКроме того, Ганс Пассант и Брайан Гидеондобавил следующее (при условии, что ни одна из них не вписывается ни в одну из предыдущих категорий):
Запуск или пробуждение потокаПереключение контекстаThread.Sleep()
Мне было интересно, если этот список был завершен (если полный список можно было бы даже практически сделать)
РЕДАКТИРОВАТЬ предложенные дополнения:
Изменчивый (чтение подразумевает забор приобретения, написание подразумевает забор выпуска)