2012-05-14 26 views
6

tôi có những hành động tuần tự sau đây về hai diễn viên, một mẹP và một đứa trẻ C:Akka bối cảnh đồng hồ/Ngừng theo dõi xảy ra-trước khi mối quan hệ

  1. P đồng hồ C (context watch c)
  2. P unwatches C (context unwatch c)
  3. P dừng C duyên dáng (c ! PoisonPill)

Những gì tôi muốn biết là; Tôi có bảo đảm rằng Pkhông nhận được sự kiện Terminated cho C?

Dưới đây là một mảnh mẫu mã

class HappensBefore extends App { 
    class C extends Actor { def receive = {} } 
    class P extends Actor { 
    val c = context actorOf Props[C] 
    context watch c 
    context unwatch c 
    c ! PoisonPill 
    def receive = { case Terminated(child) => println("Oh Noes!") } 
    } 
    ActorSystem("test") actorOf Props[P] 
} 

Trả lời

4

Không, không có đảm bảo như vậy.

+1

Viktor - cảm ơn câu trả lời. Có cách nào để giái quyết vấn đề này không? Điều quan trọng là trong trường hợp của tôi, diễn viên 'P' có thể tự hủy đăng ký với tư cách người nghe từ' C' theo cách mà khi nó dừng 'C', nó không nhận được sự kiện' Terminated'. Có cách nào để đính kèm lệnh gọi 'onSuccess' vào cuộc gọi' unwatch' không? Nếu không, việc sử dụng * unwatching * là gì? –

+0

Bạn không biết liệu C có chấm dứt từ một số lý do khác ở giữa hai trạng thái này hay không. Bây giờ, nó có thể chỉ hoạt động, và làm điều đó 100% thời gian do cách nó hiện đang được thực hiện. Chúng tôi chỉ không đảm bảo rằng nó sẽ. –

+0

Xin lỗi, tôi nên rõ ràng hơn. Chỉ có một cuộc gọi dừng C; đó là một trong bước 4 –

Các vấn đề liên quan