2017-12-05 7 views
0

は、join EDになることができactor戻りActorJob:0.20で俳優がkotlinx.coroutines 0.20で停止するまで最善の方法を教えてください。 kotlinx.coroutines 0.19で

val myActor = actor<...> { ... } 
... 
myActor.join() 

は、SendChannelを返すように変更されます。実装を見てみると、それはまだJobを拡張するクラスのインスタンスを返すんので、私は

... 
(myActor as Job).join() 

を書くことができるが、これは明らかにコードのにおいです。よりよい選択肢がありますか?

+0

アクターに参加するためのユースケースは何ですか?アクターに終了メッセージを送るべき特別なメッセージを送信し、そのメッセージが処理されるまで待つか、そのアクターをキャンセルして強制的に作業を中止し、すべてのリソースを閉じるまで待つことを望みますか? ?待つ根本的な理由は何ですか?あなたは何を達成しようとしていますか? –

+0

最初のメッセージ(単一のメッセージではありませんが、アクターのロジックは特定の数のメッセージを処理し、リソースを停止して閉じます)。 –

+0

もちろん、この場合は、アクターが「Channel」または「CompletableDeferred」を使用してシグナルを送信するように変更するオプションがあります。 –

答えて

0

私がやったことは、Channelを作成してから別にJobをこのチャンネルで反復することです。

+0

この特定のユースケースに対してより良いイディオムが提供されるまでは、今のところ最高の解決策と思われます。 –

関連する問題