Pregunta

Después de leer sobre CCR: http://www.infoq.com/news/ 2008/12 / CCR Me da la impresión de que lo hace casi exactamente el mismo que el F # asíncrono bloques?

cedes port.Receive y port.Test con el fin de hacer lo mismo que "vamos!".

¿Es esto correcto? ¿Y hay algún beneficio en CCR que no se consigue con F # asíncrono?

¿Fue útil?

Solución

El ejemplo en el artículo que usted ha mencionado realmente se parece a let! de flujos de trabajo asincrónicos. En general, la palabra clave yield return en C # hace posible patrones codifican similares a F expresiones # de cálculo (de una manera extraña, ya que fue diseñado para crear enumeradores):

  • Esto también es utilizado por AsyncEnumerator , que es (en mi humilde opinión ) más simple de la CCR y un poco más cerca de F # asíncrono flujos de trabajo
  • un artículo que explica este similartiy en más detalles.

Creo que la diferencia clave entre CCR y F # flujos de trabajo asíncrono es que CCR también incluye bibliotecas para la concurrencia de paso de mensajes. Véase, por ejemplo este artículo - que utiliza la clase Port (puede enviar mensajes a los puertos) y Arbiter.Receive, que es una primitiva que le permite esperar a que los mensajes de Port.

En C #, se puede usar MailboxProcessor para implementar el mismo patrón de comunicación de paso de mensajes, pero esto no es un sistema incorporado en parte de F # flujos de trabajo asíncrono -. Se implementa MailboxProcessor usando flujos de trabajo asíncrono

En resumen : Creo que F # flujos de trabajo asíncronos son más simples y conceptualmente más clara. Sin embargo, CCR y los flujos de trabajo asíncrono juntos con MailboxProcessor implementar más o menos el mismo patrón de programación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top