Lwt を使用する ocsigen をテストしています。Lwt は「軽量スレッド」という意味だと思いますよね?もしそうなら、どうして「軽量」と呼べるでしょうか?
Lwt は軽量ではない OS のスレッドを使用しているようです (Erlang や Haskell と比較して)。
私に光を当ててください、ありがとう!
はい、Lwt は軽量スレッドを意味し、Lwt のスレッドは軽量です。Lwt には協調スレッド モデルがあり、1 つのシステム スレッドで同時に実行される lwt スレッドは 1 つだけであり、明示的に制御が渡されるまで続きます。あなたの計算が最終的に結果をもたらすことを確認するのはあなたの義務です。そうしないと、他の lwt スレッドが実行されない可能性があります。
ただし、Lwt には、ブロック システム コールを実行したり、システム全体をブロックしたり、他の lwt スレッドの実行を妨げたりしないように長時間実行される関数を委任するために使用されるシステム スレッドのプールもあります。
Lwt のモデルと実装の詳細については、この論文 (元の著者の Web ページ (こちら) から入手できます) を参照してください。
Lwtのドキュメント ページには次のように記載されています。
[Lwt] は非常に軽量な協調スレッドを提供します。スレッドの「起動」は非常に高速な操作であり、新しいスタックや新しいプロセスなどは必要ありません。さらに、コンテキストの切り替えは非常に高速です。実際、システムコールごとにスレッドを起動するのはとても簡単です。また、協調スレッドを構成すると、高度に非同期なプログラムを作成できるようになります。