質問

CCRについて読んだ後: http://www.infoq.com/news/2008/12/ccr f#asyncブロックとまったく同じであるという印象がありますか?

「let!」と同じことを行うために、port.receiveおよびport.testを獲得します。

これは正しいです?そして、CCRのf#asyncで得られない利点はありますか?

役に立ちましたか?

解決

あなたが言及した記事の例は本当にように見えます let! 非同期ワークフローから。一般に、 yield return C#のキーワードは、F#計算式と同様のパターンをエンコードすることを可能にします(列挙者の作成用に設計されたため、奇妙な方法で):

  • これも使用されます 非同期師, 、これは(imho)CCRよりも単純で、F#非同期ワークフローに少し近い
  • 私が書いた 記事 これは、このSIMILARTIYを詳細に説明しています。

CCRとF#の非同期ワークフローの重要な違いは、CCRにもメッセージパスの並行性のライブラリが含まれていることだと思います。たとえば、参照してください この記事 - それは使用しています Port クラス(ポートにメッセージを送信できます)と Arbiter.Receive, 、これはあなたがからのメッセージを待つことを可能にする原始的です Port.

F#で使用できます MailboxProcessor 同じメッセージパスコミュニケーションパターンを実装するためには、これはF#非同期ワークフローの組み込みの部分ではありません - MailboxProcessor 実装されています 使用 非同期ワークフロー。

要約すれば: :F#非同期ワークフローはよりシンプルで概念的に明確だと思います。ただし、CCRおよび非同期ワークフロー 一緒MailboxProcessor ほぼ同じプログラミングパターンを実装します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top