前に関連する質問をしたことがあります。
ocaml のスレッディングがいかに「悪い」ものであっても、実際のスレッディングができると言っているライブラリがあることに気付きました。
たとえば、Lwt
Lwt は新しい選択肢を提供します。非常に軽量な協調スレッドを提供します。スレッドの「起動」は非常に高速な操作であり、新しいスタックや新しいプロセスなどは必要ありません。さらに、コンテキストの切り替えは非常に高速です。実際、システムコールごとにスレッドを起動するのはとても簡単です。また、協調スレッドを構成すると、高度に非同期なプログラムを作成できるようになります。
また、私が正しければ、aync_coreJane Street
も同様のものを提供します。
しかし、私はかなり混乱しています。のようなスレッドを実行Lwt
または提供しますか?aync_core
Java threading
それらを使用する場合、複数の CPU を使用できますか?
OCaml で「本当のスレッド」(Java のように) を取得するにはどうすればよいですか?
編集
私はまだ混乱しています。
シナリオを追加しましょう。
サーバー ( 16 cpu cores
) とサーバー アプリケーションがあります。
サーバー アプリケーションの機能は次のとおりです。
- リクエストに耳を傾けます
- リクエストごとに、計算タスクを開始します (完了するまでに 2 分かかるとしましょう)
- 各タスクが終了すると、タスクは結果をメインに返すか、結果を直接クライアントに送り返します。
Java では、非常に簡単です。スレッド プールを作成し、リクエストごとにそのプールにスレッドを作成します。そのスレッドは計算タスクを実行します。これは Java で成熟しており、16 個の CPU コアを利用できます。私は正しいですか?
だから私の質問は: OCamlで同じことをすることはできますか?