在阅读了关于 CCR 的内容后:http: //www.infoq.com/news/2008/12/CCR 我得到的印象是它与 F# 异步块几乎完全相同?
您产生 port.Receive 和 port.Test 以执行与“let!”相同的操作。
它是否正确?CCR 中是否有任何 F# async 没有的好处?
在阅读了关于 CCR 的内容后:http: //www.infoq.com/news/2008/12/CCR 我得到的印象是它与 F# 异步块几乎完全相同?
您产生 port.Receive 和 port.Test 以执行与“let!”相同的操作。
它是否正确?CCR 中是否有任何 F# async 没有的好处?
您提到的文章中的示例看起来就像let!来自异步工作流。通常,yield returnC# 中的关键字可以对类似于 F# 计算表达式的模式进行编码(以一种奇怪的方式,因为它是为创建枚举器而设计的):
我认为 CCR 和 F# 异步工作流之间的主要区别在于 CCR 还包括用于消息传递并发的库。参见例如这篇文章- 它使用Port类(您可以向端口发送消息)和Arbiter.Receive,这是一个允许您等待来自 的消息的原语Port。
在 F# 中,您可以MailboxProcessor用于实现相同的消息传递通信模式,但这不是 F# 异步工作流的内置部分 -MailboxProcessor是使用异步工作流实现的。
总结:我认为 F# 异步工作流更简单,概念上更清晰。但是,CCR 和异步工作流一起实现了MailboxProcessor大致相同的编程模式。