24. threads ライブラリ

threads ライブラリを使うと Objective Caml で並列プログラミングが可能になります。 同じメモリスペースで協調して実行する複数スレッド (軽量プロセスとも呼ばれます) をコントロールすることができます。 スレッドは共有データ構造の書き換えや、通信チャンネルでデータを送受信することで通信します。

threads ライブラリはシングルプロセッサのタイムシェアリングによって実装されています。 マルチプロセッサマシンのアドバンテージは利用できません。 つまりこのライブラリを使用しても、より速く動作するプログラムを作成することは出来ません。 しかし通信プロセスとして構造化されたプログラムを書くときは、これを利用すると容易になります。

threads ライブラリにはオペレーティングシステムの互換性に応じて2つの実装が使えます:

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

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

threads ライブラリを使うコンパイルユニットは -thread オプション付きでコンパイルする必要があります(8章を見てください)。

VM レベルスレッドを使うプログラムは ocamlc-vmthread オプション付きでコンパイルし( 8 章「バッチコンパイル(ocamlcを見てください)、次のようにリンクする必要があります:

ocamlc -vmthread other options threads.cma other files
  

threads ライブラリを使うコンパイルユニットは -vmthread オプション付きでコンパイルする必要があります( 8 章「バッチコンパイル(ocamlcを見てください)。