AkkaとAkka.Netには、非同期な処理(I/Oなど)を処理し、メッセージをアクターのメッセージボックスにパイプするためのがあります。 これはどのようにProtoactorで行うことができますか?C#protoactor - Akka.NETs pipetoの代替ですか?
2
A
答えて
3
Proto.Actorで非同期アクションを処理するには、2つの方法があります。 最初は、await
のように、Proto.Actorは非同期待機を完全サポートしています。 しかし、あなたが知っているように、これは俳優が待っている間に他のメッセージを処理するのを防ぐでしょう。
PipeTo
と同様のもう1つの方法は、ReenterAfter
です。 これはPipeTo
と同じように行いますが、メッセージを送信するのではなく、コールバックをトリガしません:それは、メッセージを送信し、別のメッセージハンドラを追加するように強制するよう
public Task ReceiveAsync(IContext context)
{
var task = GetSomeAsyncTask(...);
context.ReenterAfter(task, t => {
//code inside here will run when the task completes.
//still preserving actor concurrency constraints
});
}
これは、多くの場合、PipeToよりについて推論するコードが容易になります。 ReenterAfterを使用すると、同じ効果が得られますが、アクターによって制約された並行性は得られますが、このようにワークフロー全体を構築できます。
関連する問題
- 1. Cローレベルプログラミングの代替品ですか?
- 2. C++でのオブジェクトリテラル代替
- 3. compute_face_descriptor()C++での代替
- 4. 代替WebBrowser .Net C#
- 5. 代替マージリンクリスト(Cコード)
- 6. C#Windowsサービス代替
- 7. ヘッドレスブラウザC#と代替
- 8. C/C++用のマルチデータベースライブラリの代替手段は何ですか?
- 9. アッカ.NET PipeTo()()
- 10. JSONとC#System.Web.Script.Serialization.JavaScriptSerializerの代替
- 11. オプションタイプの代替案C#
- 12. Define()(PHP)ASP.NET(C#)の代替
- 13. clangでOpenMPを代替するC++ 11
- 14. のNoSQL FREE代替(代替ravendbする)
- 15. com.google.common.io.ByteArrayDataInputの代替ですか?
- 16. OAuthの代替ですか?
- 17. は、代替offsetofは近代的なC++
- 18. Hazelcastのオープンソースの代替品ですか?
- 19. C++ reverse_iterator代替方法
- 20. 代替メソッドEncoding.Unicode.GetBytes in native C++
- 21. C#では、HttpClient.getStringAsync()メソッドの同期代替とは何ですか?
- 22. 以下のpowershellコードのC#の代替とは何ですか?
- 23. C#のイオンジップの代替品は何ですか?
- 24. C++のDiag(k)の代替方法は何ですか?
- 25. Objective-CのID変数の代替名は何ですか?
- 26. MATLABの "fminunc"に代わる良いC++の代替品ですか?
- 27. fflush(stdin)の代替品ですか?
- 28. libQGLViewerの代替品ですか?
- 29. 代替バイナリをC++の代わりにPythonで読む
- 30. C++のプログラマーのためのC#でのポインタ代替