私は並行性と並列性に関する章である「Real World Haskell」の本を読んでいます。私の質問は次のとおりです。
Haskell スレッドは、実際には 1 つの「実際の」OS スレッド内の複数の「仮想」スレッドであるため、多数 (1000 など) 作成してもパフォーマンスに劇的な影響はありませんか? つまり、Haskell スレッドを作成することで発生するオーバーヘッド
forkIO
は (ほとんど) 無視できると言えますか? 可能であれば、実用的な例を持ってきてください。軽量スレッドの概念が、マルチコア アーキテクチャの利点を利用する妨げになっていませんか? 私が理解しているように、2 つの Haskell スレッドを 2 つの別個のコアで同時に実行することはできません。これは、オペレーティング システムの観点からは、実際には 1 つのスレッドであるためです。それとも、Haskell ランタイムは、複数の CPU を確実に利用できるようにするための巧妙なトリックを行っているのでしょうか?