59 Stimmen

Leichtgewichtige Haskell-Threads - Overhead und Verwendung auf Multicores

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?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X