Me preguntaba por qué, a diferencia de Scala, F # o Haskell, el .NET Framework básico (como disponible en C# o VB) parece tener muy poco soporte nativo para patrones de concurrencia de mayor nivel .abstracciones de subprocesamiento/concurrencia de alto nivel para .NET
Hay mecanismos básicos disponibles - cerraduras, monitores, el grupo de subprocesos - pero ¿qué pasa
- las variables sincronizadas (
MVar
) - canales síncronos
- canales asincrónicos (consulta o Haskell)
- Actors/message passing (Erlang-Style)
- Futuros
- cálculos paralelos/lista Funciones
- cálculo asíncrono Composable través de LINQ (como F # 's
async {}
)
o incluso memoria transaccional (STM for Haskell)
E incluso toma en consideración de ParallelFX, esta lista sólo está parcialmente cubierto .
¿Existen razones más profundas contra la provisión de tales funcionalidades (y en lugar de querer que la gente se meta con IAsyncResult
) o se planea integrarlas en el futuro?
Hay una gran cantidad de superposición funcional en su lista. No creo que incluso quiera todo eso en un ambiente. –
Por un lado, a diferencia de sus ejemplos de idiomas.NET framework fue diseñado con solo el paradigma orientado a objetos en mente, Scala es multi-paradigma, F # y Haskell son funcionales – SpaceghostAli
@SpaceghostAli - ¿Cómo se puede decir que .NET está diseñado solo para el paradigma orientado a objetos, seguido inmediatamente diciendo que F # (un lenguaje que se ejecuta en él) es funcional? Además, ¿te estás olvidando de cosas como Linq, que está diseñado únicamente para permitir la programación funcional? –