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