GHCはデフォルトでConcurrent Haskellをサポートしていて、特別なオプションが必要だったリ、特別な方法でコンパイルされたライブラリが必要だったりはしない。Concurrent Haskellのサポートライブラリにアクセスするには、単にControl.Concurrent
をインポートすれば良い。Concurrent Haskellについてのさらなる情報はこのモジュールの付属文書にある。
任意選択で、プログラムを-threaded
オプション(4.12.6. リンクに影響するオプション)付きでリンクすることができる。これには以下の二つの利点がある。
RTSオプション-N
を使うことを可能にする。これはプログラムをマルチプロセッサあるいはマルチコアの機械上でスレッドを並列に動作させられるようにする。4.15. SMP並列計算を使うを見よ。
あるスレッドが外部呼び出しを行なったとき、(その呼び出しがunsafe
と標示されていなければ)その呼び出しの実行中にプログラム中の他のHaskellスレッドが走り続ける。さらに、foreign export
されたHaskell関数が複数のOSスレッドから同時に呼ばれても良い。8.2.4. マルチスレッドとFFIを見よ。
以下のRTSオプションがConcurrent Haskellプログラムの振る舞いに影響する。
-Cs
コンテキストスイッチの間隔をs
秒に設定する。コンテキストスイッチは、時間切れの後の最初のヒープブロック確保の時点で発生する。(ヒープブロックの確保は確保4k毎に起こる)。-C0
または-C
を使うと、コンテキストスイッチは可能な限り頻繁に(ヒープブロックの確保の度に)発生するようになる。デフォルトでは、コンテキストスイッチは20ms毎に発生する。