Mi sono chiesto perché, a differenza di Scala, F # o Haskell, il framework .NET di base (disponibile in C# o VB) sembra avere pochissimo supporto nativo per modelli di concorrenza di livello superiore .Astrazioni di multithreading/concorrenza di alto livello per .NET
Ci sono meccanismi di base disponibili - serrature, monitor, il pool di thread - ma per quanto riguarda
- variabili Sincronizzato (
MVar
) - canali sincroni
- canali asincroni (vedere andare o Haskell)
- Attori/messaggio che passa (Erlang-Style)
- Futures
- parallele calcoli/Lista funzioni
- calcoli asincroni componibili attraverso Linq (come s '
async {}
F #)
o anche software di memoria transazionale (STM for Haskell)
E anche tenuto conto di ParallelFX, questa lista è solo parzialmente coperto .
Ci sono alcune ragioni più profonde contro la fornitura di tali funzionalità (e invece di volere che le persone si scherzino con lo IAsyncResult
) o si prevede di integrarlo in futuro?
C'è una quantità enorme di sovrapposizione funzionale nella tua lista. Non penso che vorrei nemmeno tutto ciò in un ambiente. –
Per prima cosa, a differenza delle lingue di esempio.NET framework è stato progettato pensando solo al paradigma object oriented, Scala è multi-paradigma, F # e Haskell sono funzionali – SpaceghostAli
@SpaceghostAli - Come puoi dire che .NET è progettato solo per il paradigma object-oriented, seguito immediatamente dicendo che F # (un linguaggio che viene eseguito su di esso) è funzionale? Inoltre, stai dimenticando cose come Linq che è stato progettato esclusivamente per consentire la programmazione funzionale? –