2017-12-05 22 views
0

, actor 반환 ActorJob는 :배우가 kotlinx.coroutines 0.20에서 멈출 때까지 기다리는 것이 가장 좋습니다. <code>join</code> 에드 될 수 kotlinx.coroutines 0.19에서

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

, SendChannel를 반환하도록 변경합니다. 구현 보면, 그것은 여전히 ​​Job를 확장하는 클래스의 인스턴스를 반환하지, 그래서 나는

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

를 작성할 수 있지만, 이것은 명백한 코드 냄새입니다. 더 나은 대안이 있습니까?

+0

액터에 가입하기위한 용도는 무엇입니까? 액터에 종료 메시지를 보낼 특별한 메시지를 보내고 처리가 끝날 때까지 기다리거나 액터를 취소하고 작업을 중단하고 모든 리소스를 닫을 때까지 기다리고 싶습니다. ? 기다려야 할 근본적인 이유는 무엇입니까? 무엇을 성취하려고합니까? –

+0

첫 번째 메시지 (단일 메시지는 아니지만 액터의 논리는 특정 개수의 메시지를 처리 ​​한 다음 해당 리소스를 중지하고 닫습니다). –

+0

물론이 경우에는 액터가 수정 될 때 'Channel'또는 'CompletableDeferred'를 사용하여 신호를 보내도록 액터를 수정할 수있는 옵션이 있습니다. –

답변

0

결국 나는 Channel을 만들고 나서 launch을 보내고이 채널을 반복합니다.

+0

더 나은 숙어가이 특정 유스 케이스에 제공 될 때까지 지금은 가장 좋은 해결책 인 것 같습니다. –