Sự khác biệt giữa Mô hình diễn viên và quy trình tuần tự giao tiếp (CSP)


16

Khi chúng ta nhìn vào Mô hình diễn viênGiao tiếp các quy trình tuần tự, chúng ta thấy rằng cả hai đều cố gắng thực hiện đồng thời dựa trên việc truyền thông điệp , nhưng chúng khác biệt .

(Chúng tôi thấy việc triển khai Mô hình CSP trong các goroutines của go-lang (và Clojure's core.async ) và Mô hình diễn viên trong bộ công cụ Akka của Scala )

Tôi đang cố gắng để có được một danh sách đơn giản về sự khác biệt giữa Mô hình diễn viên và CSP. Cho đến nay tôi có:

Điều này có đúng không? Có thiếu điều gì không?

Giả định

  • Khi tôi nói 'mô hình diễn viên' - ý tôi là cơ sở lý thuyết đằng sau việc thực hiện trong khuôn khổ Akka của Scala

Một điểm rất lớn: Trong thông điệp CSP là đồng bộ; trong thông điệp Actors là không đồng bộ.
Dave Clarke

@hawkeye Bạn nghĩ gì về "người mẫu" diễn viên? Kể từ khi mô tả không chính thức, nhiều hình thức đã xuất hiện, với các thuộc tính hơi khác nhau.
Martin Berger

@Martin - thật hữu ích. Tôi đã cập nhật các giả định của mình. Có lẽ bạn có thể giúp tôi tìm "người mà tôi đang tìm kiếm"
hawkeye

@hawkeye Bạn có ý nghĩa gì với mô hình Akka? Chỉ có cơ chế tính toán chính, hay khung xử lý giám sát / xử lý lỗi phân tán?
Martin Berger

@MartinBerger chỉ là cơ chế tính toán quan trọng
hawkeye

Câu trả lời:


6

Đây là cách tôi nghĩ Erlang hoạt động. Tôi tin rằng Akka rất giống nhau.

Mỗi quy trình có một hộp thư duy nhất. Người gửi được người gửi đưa vào hộp thư của người nhận và được người nhận tìm nạp bằng cách sử dụng khớp mẫu. Quá trình đối sánh này có thể thay đổi thứ tự tin nhắn theo nghĩa là tin nhắn cũ nhất trong hộp thư có thể không khớp, nhưng một tin nhắn trẻ hơn thì có. Trong trường hợp này, người trẻ hơn được tiêu thụ đầu tiên. Ngoài ra, đặt hàng tin nhắn được bảo tồn.

ππ

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.