CCR について読んだ後: http://www.infoq.com/news/2008/12/CCR F# 非同期ブロックとほとんど同じように動作するという印象を受けました。
「let!」と同じことをするために、port.Receive と port.Test を生成します。
これは正しいです?CCR には、F# 非同期では得られない利点がありますか?
CCR について読んだ後: http://www.infoq.com/news/2008/12/CCR F# 非同期ブロックとほとんど同じように動作するという印象を受けました。
「let!」と同じことをするために、port.Receive と port.Test を生成します。
これは正しいです?CCR には、F# 非同期では得られない利点がありますか?
あなたが言及した記事の例は、let!
非同期ワークフローのように見えます。一般に、yield return
C# のキーワードを使用すると、F# の計算式に似たパターンをエンコードできます (列挙子を作成するために設計されているため、奇妙な方法です)。
CCR と F# の非同期ワークフローの主な違いは、CCR にはメッセージ パッシングの同時実行のためのライブラリも含まれていることだと思います。たとえば、この記事を参照してください-Port
クラス (ポートにメッセージを送信できます) とArbiter.Receive
からのメッセージを待機できるプリミティブである を使用しますPort
。
MailboxProcessor
F# では、同じメッセージ パッシング通信パターンの実装に使用できますが、これは F# 非同期ワークフローの組み込み部分ではなく、非同期ワークフローを使用してMailboxProcessor
実装されます。
要約すると、F# 非同期ワークフローはより単純で、概念的にも明確であると思います。ただし、CCR と非同期ワークフローは、ほぼ同じプログラミング パターンを一緒に実装します。MailboxProcessor