なぜ違う値を見たのかーー並列実行におけるCPUの動作

こんにちは、ヘルスケア事業部のちょうです。今日は並列プログラミングによくある間違うコード及びその原因について共有したいと思います。 まずはコード(抜粋、C言語) int a = 0; bool f = false; void cpu0() { a = 1; // 1 f = true; // 2 } void cpu1() { while(!f); // 3 printf("%d\n", a); // 4 } 関数cpu0とcpu1…