2012-08-08 4 views
8

私はLwtを使用するocsigenをテストしています。私はLwtが「軽量スレッド」を意味すると思います。もしそうなら、私たちはそれを「軽量」と呼ぶことができますか?Lwtは「軽量スレッド」を意味しますか?

Lwtは光ではないOSのスレッドを使用しているようです(ErlangとHaskellと比較して)。

私に光を当ててください、ありがとう!

答えて

7

documentation page for Lwtは言う:

[LWT]は非常に軽量協調型スレッドを提供します。スレッドを「起動」するのは非常に高速ですが、新しいスタックや新しいプロセスなどを必要としません。さらにコンテキストスイッチは非常に高速です。実際、すべてのシステムコールに対してスレッドを起動するのはとても簡単です。協調スレッドを作成することで、非常に非同期のプログラムを書くことができます。

15

はい、Lwtは軽量スレッドを意味し、Lwtのスレッドは軽いです。 Lwtには協調スレッドモデルがあり、明示的に制御が得られるまで、単一のシステムスレッドで同時に1つのlwtスレッドしか実行されません。あなたの計算で最終的に他のスレッドが実行されないようにするのはあなたの義務です。

しかし、Lwtはブロックシステムコールを実行したり、長時間実行している関数を委譲してシステム全体をブロックしたり、他のlwtスレッドが実行されないようにするためにも使用されています(pool of system threads)。

thisの論文(これは元の著者のウェブページhereで入手できます)でLwtのモデルと実装について詳しく知ることができます。

関連する問題