Modelos de Memória de Linguagens de Programação: Desafios e Soluções na Programação Concorrente

2024-12-12

Este artigo aprofunda-se nos modelos de memória de linguagens de programação, especificamente o comportamento da memória compartilhada em programas multithread. Usando um programa simples semelhante a C como exemplo, ele ilustra como otimizações do compilador podem levar a resultados inesperados, como corridas de dados entre threads. Para resolver isso, linguagens modernas introduzem variáveis atômicas e operações atômicas para garantir a sincronização de threads e evitar corridas de dados. O artigo compara os modelos de memória de Java, C++, Rust e outras linguagens, analisando seus pontos fortes e fracos e evolução, e aponta os desafios restantes na formalização de modelos de memória.