24. threads ライブラリ

threads ライブラリを使うと Objective Caml で並列プログラムを書くことができます。 同一のメモリ空間で協調して実行する複数のスレッド(軽量プロセスとも呼ばれます)を制御することができます。 スレッドは共有データ構造の書き換えや、通信チャネルでデータを送受信することで通信します。

threads ライブラリは単一プロセッサ上の時分割によって実装されています。 マルチプロセッサマシンを活用することはできません。 つまりこのライブラリを使用しても、プログラムを高速化することはできません。 しかし、相互に通信する複数のプロセスとして構造化されたプログラムを書くことは容易になります。

threads ライブラリには OS の機能に応じてふたつの実装があります。

threads ライブラリを使用するプログラムは以下のようにリンクしてください。

ocamlc -thread other options unix.cma threads.cma other files
ocamlopt -thread other options unix.cmxa threads.cmxa other files
  

threads ライブラリを使う翻訳単位は -thread オプション付きでコンパイルしなければなりません( 8 章「バッチコンパイル(ocamlc を参照してください)。

VM レベルスレッドを使うプログラムは ocamlc-vmthread オプション付きでコンパイルし( 8 章「バッチコンパイル(ocamlc を参照してください)、次のようにリンクしなければなりません。

ocamlc -vmthread other options threads.cma other files
  

threads ライブラリを使う翻訳単位も -vmthread オプション付きでコンパイルしなければなりません( 8 章「バッチコンパイル(ocamlc を参照してください)。