序文 これまでRuss Coxが書いたメモリモデルに関する記事について、 Twitterでまとめてきた。 Updating the Go Memory Modelの要約 Goのメモリモデルは上記記事にあるように「データ競合のあるプログラムは、実装が競合を報告してプログラムを終了する可能性があり」その意味で無効なプログラムとして処理され、それ以外の場合(例えば部分的にデータ競合のあるプログラム等)はその場合の挙動を予め定義している。 さて、OCaml 5.0.0 は2022/12/16にリリースされたが、この時初めてマルチプロセッサに対応した。 つまり並列処理に対応した(以前は並行処理しかできなかった)。 そこで改めてOCamlのメモリモデルについてしっかりと理解してみる。 OCamlのメモリモデル概要 モダンなプロセッサとコンパイラは積極的にプログラムを最適化するが、並列処理を含むプログラ
![OCamlのメモリモデルについて](https://cdn-ak-scissors.b.st-hatena.com/image/square/47ba3e4fea737cd5688382a5fa7a8fa7d74dc319/height=288;version=1;width=512/https%3A%2F%2Fv2.aintek.xyz%2Faintek_2.png)