Intel 64 e IA-32 | Operações atômicas, incluindo aquisição / liberação semântica

De acordo com o Manual do desenvolvedor de software das arquiteturas Intel 64 e IA-32, o prefixo do sinal LOCK "garante que o processador use exclusivamente qualquer memória compartilhada enquanto o sinal é afirmado". Isso pode ser um na forma de um barramento ou bloqueio de cache.

Mas - e é por isso que estou fazendo essa pergunta - não está claro para mim, se esse prefixo também fornece alguma barreira à memória.

Estou desenvolvendo com o NASM em um ambiente com vários processadores e preciso implementar operações atômicas com semântica opcional de aquisição e / ou liberação.

Então, preciso usar as instruções MFENCE, SFENCE e LFENCE ou isso seria redundante?

questionAnswers(3)

yourAnswerToTheQuestion