Чтение учебник по потоку Джозефа Альбахари, следующие упоминаются как генераторы барьеров памяти:
- С#
lock
(Monitor.Enter
/Monitor.Exit
) - Все методы класса
Interlocked
- Асинхронные обратные вызовы, которые используют пул потоков - сюда относятся асинхронные делегаты, обратные вызовы APM и продолжения задач
- Настройка и ожидание конструкции сигнализации
- Все, что связано с сигнализацией, например, запуск или ожидание задачи
Кроме того, Ханс Пассант и Брайан Гидеон добавил следующее (предполагая, что ни один из них уже не вписывается в одну из предыдущих категорий):
- Запуск или просыпание потока
- Контекстный коммутатор
-
Thread.Sleep()
Мне было интересно, был ли этот список завершен (если полный список можно даже сделать практически)
EDIT:
- Летучие (чтение подразумевает приобретение забора, запись подразумевает освобождение забора)