Geradores de barreira de memória
Leitura Tutorial de threading de Joseph Albahari, os seguintes são mencionados como geradores de barreiras de memória:
C # 'lock
declaração Monitor.Enter
/Monitor.Exit
)odos os métodos noInterlocked
class Retornos de chamada assíncronos que usam o conjunto de encadeamentos - incluem delegados assíncronos, retornos de chamada APM e continuação de tarefasConfigurando e aguardando uma construção de sinalização Qualquer coisa que dependa de sinalização, como iniciar ou aguardar uma tarefaAlém disso, Hans Passant e Brian Gideonadicionou o seguinte (supondo que nenhuma delas já se encaixe em uma das categorias anteriores):
Iniciando ou ativando um threadMudança de contextThread.Sleep()
Eu estava pensando se essa lista estava completa (se uma lista completa poderia mesmo ser feita praticamente)
EDITA adições sugeridas:
Volátil (a leitura implica uma cerca de aquisição, a escrita implica uma cerca de liberação)