Avatar ·

¿Qué es el modelo de memoria en C++11 y cómo afecta a la programación multihilo?

¡Hola a todos! Empecé a estudiar la programación multihilo en C++ y me topé con el término "modelo de memoria" (memory model), que apareció en el estándar C++11. Honestamente, no termino de entender qué significa y para qué sirve. Antes escribía programas simples de un solo hilo, y me parecía que todo con la memoria era claro: las variables están en la RAM, el procesador las lee y escribe. Pero cuando intenté escribir un ejemplo simple con dos hilos, empecé a tener problemas extraños. Aquí está el 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; } ``` Esperaba que reader siempre imprimiera "Value: 42", pero a veces el programa muestra "Value: 0" o incluso se cuelga. He oído que