Avatar ·

O que é o modelo de memória em C++11 e como ele afeta a programação multithread?

Olá a todos! Comecei a estudar multithreading em C++ e me deparei com o termo "modelo de memória" (memory model), que apareceu no padrão C++11. Sinceramente, não entendo completamente o que isso significa e para que serve. Antes, eu escrevia programas single-thread simples e achava que a memória era algo óbvio: as variáveis ficam na RAM, o processador as lê e escreve. Mas quando tentei escrever um exemplo simples com duas threads, comecei a ter problemas estranhos. Aqui está o código: ```cpp #include #include bool flag = false; int value = 0; void writer() { value = 42; flag = true; } void reader() { while (!flag) {} std::cout << "Value: " << value << std::endl; } int main() { std::thread t1(writer); std::thread t2(reader); t1.join(); t2.join(); return 0; } ``` Eu esperava que reader sempre imprimisse "Value: 42", mas às vezes o programa exibe "Value: 0" ou simplesmente trava. Ouvi dizer que