[edit: die Frage erwähnt nur Concurrent Haskell, aber das Papier verwiesen wird, glaube ich, "Composable Memory Transactions", die Zeitung, in der Haskell STM erstmals beschrieben wurde. Bitte korrigieren Sie mich, wenn ich hier falsch liege.]
STM funktioniert jetzt gut auf mehreren Kernen. Die parallele Implementierung wurde zuerst in GHC 6.6 ausgeliefert und verwendet eine feinkörnige zweiphasige Sperrstrategie. das heißt, um eine Transaktion zu beglaubigen, versucht die Implementierung zuerst, jede an der Transaktion beteiligte Variable zu sperren, dann schreibt sie die Änderungen fest und gibt schließlich alle Variablen frei. Das Erfassen einer Sperre blockiert nicht: Wenn die Sperre bereits gehalten wird, wird die Transaktion abgebrochen und erneut versucht (dies vermeidet den üblichen Deadlock für die Aufhebung der Sperrreihenfolge, der angewendet würde, wenn die Sperrenerfassung blockiert würde). Diese STM-Implementierung ist sicherlich nicht die schnellste - die Literatur beschreibt viele alternative Techniken, die zu einer besseren Leistung führen würden, aber die Implementierung von GHC ist relativ unkompliziert und beinhaltet keine globalen Sperren (Transaktionen, die mit unterschiedlichen Variablengruppen arbeiten, können fortfahren) parallel ohne Störung).
möglich Duplikat von [Was ist der Status der Multicore-Programmierung in Haskell?] (Http://stackoverflow.com/questions/3063652/whats-the-status-of-multicore-programming-in-haskell) –