我一直在阅读“Real World Haskell”一书,关于并发和并行性的章节。我的问题如下:
由于 Haskell 线程实际上只是一个“真实”操作系统线程中的多个“虚拟”线程,这是否意味着创建大量线程(如 1000 个)不会对性能产生重大影响?即,我们可以说创建 Haskell 线程所产生的开销
forkIO
(几乎)可以忽略不计吗?如果可能,请提供实际示例。轻量级线程的概念难道不会阻止我们利用多核架构的好处吗?据我了解,两个 Haskell 线程不可能在两个单独的内核上同时执行,因为从操作系统的角度来看,它们实际上是一个单线程。或者 Haskell 运行时是否做了一些巧妙的技巧来确保可以使用多个 CPU?