我一直在阅读"真实世界Haskell"一书,关于并发和并行的章节.我的问题如下:
由于Haskell线程实际上只是一个"真正的"OS线程中的多个"虚拟"线程,这是否意味着创建它们(如1000)不会对性能产生重大影响?即,我们可以说创建Haskell线程所产生的开销forkIO几乎可以忽略不计吗?如果可能的话,请带上典型的例子.
轻量级线程的概念是否阻止我们使用多核架构的好处?据我所知,两个Haskell线程不可能在两个独立的内核上并发执行,因为从操作系统的角度来看它们实际上是一个单独的线程.或者Haskell运行时是否做了一些聪明的技巧来确保可以使用多个CPU?
concurrency multithreading haskell multicore lightweight-processes
在阅读了Erlang的轻量级过程后,我非常确定它们是"绿色线程".直到我读到绿色线程和Erlang的进程之间存在差异.但我不明白.
有什么实际差异?
我对Erlang的了解非常有限,但据我所知,它可以以非常低的成本产生"过程".
所以我想知道,幕后的那些"过程"是什么?
它们是纤维吗?主题?延续?