Posso forçar a coerência do cache em uma CPU x86 multicor

Na outra semana, escrevi uma pequena classe de threads e um canal de mensagens unidirecional para permitir a comunicação entre segmentos (dois canais por segmento, obviamente, para comunicação bidirecional). Tudo funcionou bem no meu Athlon 64 X2, mas eu queria saber se teria algum problema se os dois threads estivessem olhando para a mesma variável e o valor em cache local para essa variável em cada núcleo estivesse fora de sincroni

Eu sei ovoláti palavra-chave @ forçará uma variável a atualizar da memória, mas existe uma maneira nos processadores x86 multicore para forçar a sincronização dos caches de todos os núcleos? É algo com que eu preciso me preocupar ouvoláti e o uso adequado de mecanismos de bloqueio leves (eu estava usando _InterlockedExchange para definir minhas variáveis de canal voláteis) lida com todos os casos em que desejo escrever código "livre de bloqueio" para CPUs x86 multicor

Eu já estou ciente e usei Seções Críticas, Mutexes, Eventos e assim por diante. Estou pensando principalmente se existem intrínsecos x86 que não conheço de qual força ou que podem ser usados para reforçar a coerência do cach

questionAnswers(9)

yourAnswerToTheQuestion