Como as cercas atomizam as operações load-modify-store?

Eu li, colocando uma instrução de cerca depois que um load-modify-store, como o BTS, faz você tratar o segundo atomic. Mas, de acordo com a documentação da Intel, as instruções da cerca são descritas como

(MFENCE)

Executa uma operação de serialização em todas as instruções de carga da memória e de armazenamento na memória que foram emitidas antes da instrução MFENCE. Essa operação de serialização garante que todas as instruções de carga e armazenamento que precedem a instrução MFENCE na ordem do programa sejam globalmente visíveis antes de qualquer instrução load ou store que siga a instrução MFENCE.

Então, como esse comportamento garante a "atomicidade" mencionada?

Especificamente, se tivermos duas execuções simultâneas do código a seguir executadas por processadores distintos, como a barreira impediria a leitura de 0 em CF nos dois casos?

start memory assumption: [addr] contains the word 0

BTS WORD PTR [addr], 0
MFENCE

questionAnswers(1)

yourAnswerToTheQuestion