Ich habe das Buch "Real World Haskell" gelesen, das Kapitel über Gleichzeitigkeit und Parallelität. Meine Frage ist die folgende:
-
Da Haskell-Threads eigentlich nur mehrere "virtuelle" Threads innerhalb eines "echten" OS-Threads sind, bedeutet dies, dass die Erstellung einer großen Anzahl von Threads (etwa 1000) keine drastischen Auswirkungen auf die Leistung hat? D.h., können wir sagen, dass der Overhead, der durch die Erstellung eines Haskell-Threads mit
forkIO
(fast) vernachlässigbar ist? Bitte bringen Sie nach Möglichkeit konkrete Beispiele. -
Hindert uns das Konzept der leichtgewichtigen Threads nicht daran, die Vorzüge von Multicore-Architekturen zu nutzen? Soweit ich weiß, ist es nicht möglich, dass zwei Haskell-Threads gleichzeitig auf zwei verschiedenen Kernen ausgeführt werden, da sie aus Sicht des Betriebssystems eigentlich ein einziger Thread sind. Oder wendet die Haskell-Laufzeitumgebung einige clevere Tricks an, um sicherzustellen, dass mehrere CPUs genutzt werden können?