Übergeordnete Multithreading- / Parallelitätsabstraktionen für .NET

Ich habe mich nur gefragt, warum das grundlegende .NET-Framework (wie es in C # oder VB verfügbar ist) im Gegensatz zu Scala, F # oder Haskell nur sehr wenig native Unterstützung für Parallelitätsmuster auf höherer Ebene bietet.

Es stehen grundlegende Mechanismen zur Verfügung - Sperren, Monitore, der Thread-Pool - aber was ist damit?

Synchronisierte Variablen (MVar)Synchrone KanäleAsynchrone Kanäle (siehe Go oderHaskell)Schauspieler / Message Passing (Erlang-Style)FuturesParallele Berechnungen / ListenfunktionenZusammensetzbare asynchrone Berechnungen durch Linq (wie F # 'sasync {})

oder auch Software-Transaktionsspeicher (STM für Haskell)

Und selbst unter Berücksichtigung von ParallelFX wird diese Liste nur teilweise abgedeckt.

Gibt es tiefere Gründe dafür, solche Funktionalitäten nicht bereitzustellen (und stattdessen zu wollen, dass die Leute damit herumspielen?)?IAsyncResultoder soll das in zukunft integriert werden?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage