No desenvolvimento de algoritmos paralelos de
alto desempenho em arquiteturas modernas, dois
conceitos amplamente utilizados são a coerência
de cache e a consistência de memória. Considere
um cenário em que um programador implementa
um padrão produtor consumidor simples
utilizando uma flag booleana para indicar a
disponibilidade de um dado recém-escrito em um
buffer compartilhado. Mesmo operando sobre um
hardware que garante coerência de cache estrita
(como o protocolo MESI), o consumidor
ocasionalmente lê dados inconsistentes ou
desatualizados após verificar que a flag é
verdadeira. Qual primitiva de programação paralela
deve ser obrigatoriamente inserida no código para
corrigir esse comportamento e qual é a justificativa
técnica para sua necessidade?