Previous Contents Next
Chapter 24 The threads library

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

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

  Unix:
threads ライブラリを使用するプログラムは以下のようにリンクしてください。
        ocamlc -thread other options threads.cma other files
-thread オプションによってスレッドセーフな標準ライブラリを使用します (8 を見て下さい) 。threads ライブラリ (ThreadMutex 、...) が使用するモジュールはすべて -thread オプション付きでコンパイルして下さい。

ocamlopt でコンパイルされた native-code プログラムではデフォルトのスレッドライブラリは使用できません。 オペレーティングシステムで POSIX 1003.1c 準拠のスレッドが提供されている場合は、Objective Caml のコンフィギュレーションでnative-code プログラムもサポートした別のスレッドライブラリを使用するように指定できます (configure-with-pthread オプションを指定して下さい) 。 こちらの threads ライブラリを使用したプログラムは以下のようにリンクして下さい。
        ocamlc -thread other options threads.cma other files
        ocamlopt -thread other options threads.cmxa other files
オペレーティングシステムによっては、新たにシステムライブラリが必要となるかもしれません。 例えば Solaris 2.5 ならば、-cclib -lposix4 をコマンドラインの最後に追加してください。
  Windows:
threads ライブラリを使用するプログラムは以下のようにリンクしてください。
        ocamlc -thread other options threads.cma other files
コマンドラインのすべてのオブジェクトファイルも、スレッドセーフな標準ライブラリを使用するように -thread 付きでコンパイルしてください (8 を見て下さい) 。



Previous Contents Next