Ich fragte mich, warum, im Gegensatz zu Scala, F # oder Haskell, das grundlegende .NET Framework (wie in C# oder VB verfügbar) sehr wenig native Unterstützung für höhere Gleichzeitigkeitsmuster zu haben scheint .High-Level Multithreading/Concurrency Abstraktionen für .NET
Es gibt grundlegende Mechanismen zur Verfügung - Schlösser, Monitore, die Thread-Pool - aber was ist
- Synchronisierte Variablen (
MVar
) - Synchrone Kanäle
- Asynchronous Kanäle (siehe Go oder Haskell)
- Akteure/Nachrichtenübergabe (Erlang-Style)
- Futures
- Parallele Berechnungen/Listenfunktionen
- Composable asynchrone Berechnungen durch Linq (wie F # 's
async {}
)
oder auch Software Transactional Memory (STM for Haskell)
Und selbst Rechnung getragen ParallelFX ist diese Liste nur teilweise abgedeckt .
Gibt es bestimmte tiefere Gründe gegen die Bereitstellung solcher Funktionen (und stattdessen wollen Menschen mit IAsyncResult
summieren) oder soll dies in Zukunft integriert werden?
Es gibt eine große Menge an funktionaler Überlappung in Ihrer Liste. Ich glaube nicht, dass ich das alles in einer Umgebung haben möchte. –
Zum einen, im Gegensatz zu Ihren Beispielsprachen.NET Framework wurde nur mit dem objektorientierten Paradigma entworfen, Scala ist Multiparadigma, F # und Haskell sind funktional. – SpaceghostAli
@SpaceghostAli - Wie können Sie sagen, dass .NET nur für das objektorientierte Paradigma entwickelt wurde, gefolgt von der Aussage F # (eine Sprache, die darauf läuft) ist funktional? Vergessen Sie auch Dinge wie Linq, die ausschließlich für die funktionale Programmierung gedacht sind? –