OCamlのコンテキストスイッチのタイミングを調べた。 OCaml では OSネイティブのスレッド (pthread) を使える。 しかし、OCamlのランタイム内で同時に走るネイティブスレッドは1本だけ、という制限がある。OCamlはスレッドセーフなGCを備えていないためだ。 スレッドはプログラムを構造化して書くために使うツールと割り切ろう、ということらしい。 OCamlの(シングルスレッドの)高いパフォーマンスの代償だろうか。 いずれコンカレントGCはサポートされるだろうと期待するけれど*1、待ってられないので現在の話を考えよう。 動機 : スレッドのコンテキストスイッチの頻度 OCamlで書いたバイナリとCやJavaを協調動作させるとき、この1スレッド制限がどう効いてくるのかすこし気になっている.たとえば 1つのスレッドが OCaml側で走っているときに C to OCaml のコー