c# - sincronos - qué es síncrono y asíncrono
¿Es asíncrono en C#la misma implementación que en F#? (1)
Ellos son diferentes. La principal diferencia es que C # usa la Task<T>
.NET estándar Task<T>
para representar cálculos asincrónicos, mientras que F # usa su propio tipo llamado Async<T>
.
Más específicamente, las diferencias clave son:
El método asíncrono AC # crea una
Task<T>
que se inicia de inmediato (modelo de tarea en caliente ), mientras que F # crea un cálculo que debe iniciar explícitamente (modelo de generador ). Esto significa que los cálculos de F # son más fáciles de componer (puede escribir abstracciones de nivel superior).En F # también obtiene un mejor control sobre cómo se inicia el cálculo. Puede iniciar un cálculo utilizando
Async.Start
para iniciarlo en segundo plano oAsync.StartImmediate
para iniciarlo en el subproceso actual.Los flujos de trabajo asíncronos de F # admiten la cancelación automáticamente, por lo que no tiene que pasar a
CancellationToken
.Quizás otra consecuencia del primer punto es que los flujos de trabajo asíncronos de F # también admiten la recursión de cola, por lo que puede escribir flujos de trabajo recursivos (esto no funcionaría fácilmente en C #, pero C # no usa este estilo de programación)
Escribí un artículo más detallado sobre este tema: C # asincrónico y F # (II.): ¿En qué se diferencian?
¿Es la implementación asíncrona en C # 4.5 exactamente la misma que en F # 2 en la forma en que se usan los hilos?