Tôi giả định rằng các tin nhắn sẽ được nhận và xử lý theo cách an toàn. Tuy nhiên, tôi đã đọc (một số) tài liệu akka/scala nhưng tôi đã không gặp phải từ khóa 'threadsafe' được nêu ra.Diễn viên (scala/akka): là nó ngụ ý rằng phương thức nhận sẽ được truy cập theo cách chủ đề an toàn?
Diễn viên (scala/akka): là nó ngụ ý rằng phương thức nhận sẽ được truy cập theo cách chủ đề an toàn?
Trả lời
Có thể vì mô hình diễn viên giả định rằng mỗi cá thể tác nhân xử lý tuần tự hộp thư của riêng nó. Điều đó có nghĩa là nó sẽ không bao giờ xảy ra, rằng hai hoặc nhiều luồng đồng thời thực hiện mã của cá thể tác nhân đơn lẻ. Về mặt kỹ thuật, bạn có thể tạo một phương thức trong lớp của một diễn viên (vì nó vẫn là một đối tượng) và gọi nó từ nhiều luồng đồng thời, nhưng đây sẽ là một sự khởi đầu chính từ các quy tắc sử dụng của diễn viên và bạn sẽ làm điều đó. bởi vì sau đó bạn sẽ mất tất cả các đảm bảo an toàn luồng của mô hình đó. Đây cũng là một trong những lý do, tại sao Akka giới thiệu một khái niệm về ActorRef - một tay cầm, cho phép bạn giao tiếp với nam diễn viên thông qua việc gửi tin nhắn, nhưng không phải bằng cách gọi trực tiếp các phương thức của nó.
Tôi nghĩ chúng ta có nó khá tốt tài liệu: http://doc.akka.io/docs/akka/2.3.9/general/jmm.html
Tôi đã đọc tài liệu đó nhiều lần. Tôi là một newman JVM; trong sự hiểu biết của tôi, một 'xảy ra trước' chỉ xác định 'khả năng hiển thị'. Chúng tôi vẫn có thể gặp sự cố do nhiều luồng trong phần quan trọng. –
Akka bảo vệ chống lại việc thực hiện thư cho cùng một diễn viên cùng một lúc bằng cách chỉ cho phép hộp thư được lên lịch thực thi một lần. (hoặc nó được lên kế hoạch để thực hiện hoặc nó không). Bằng cách làm cho Runbox Mailbox không chỉ làm chúng ta tránh phân bổ các runnables mới, nhưng chúng ta cũng có thể, thông qua một thao tác CAS đơn giản, đảm bảo rằng một hộp thư chỉ được lên lịch để thực hiện một lần, điều đó có nghĩa là không cần thêm sách để đảm bảo rằng 2 chủ đề không xử lý cùng một hộp thư cùng một lúc. –
Giải thích tuyệt vời. Điều này chắc chắn sẽ giúp tôi đọc thêm. Tuy nhiên, một câu hỏi, làm thế nào tôi có thể suy ra 'xử lý loại trừ lẫn nhau' của hộp thư từ http://akka.io/docs/akka/1.2/general/jmm.html? –
diễn viên là 'Treadsafe'. Hệ thống diễn viên (AKKA), cung cấp cho mỗi diễn viên với 'sợi chỉ trọng lượng nhẹ' của riêng mình. Có nghĩa rằng đây không phải là một bước đi, nhưng hệ thống AKKA sẽ tạo ấn tượng rằng một diễn viên luôn luôn chạy trong chủ đề riêng của nó cho nhà phát triển. Điều này có nghĩa là bất kỳ thao tác nào được thực hiện do hành động trên một tin nhắn là, cho tất cả các mục đích, chủ đề an toàn.
Tuy nhiên, bạn không nên làm suy yếu AKKA bằng cách sử dụng tin nhắn có thể thay đổi hoặc trạng thái công khai. Nếu bạn phát triển bạn diễn viên để được đứng một mình đơn vị chức năng, sau đó họ sẽ được threadsafe.
Xem thêm: http://doc.akka.io/docs/akka/2.3.12/general/actors.html#State
và http://doc.akka.io/docs/akka/2.3.12/general/jmm.html cho một nghiên cứu sâu sắc hơn của mô hình bộ nhớ AKKA và làm thế nào nó quản lý các vấn đề 'lốp'.
- 1. C# Chủ đề an toàn nhanh (est) truy cập
- 2. msdn: "An toàn chủ đề" là gì?
- 3. Là int? chủ đề an toàn?
- 4. Liệu [=] ngụ ý rằng tất cả các biến cục bộ sẽ được sao chép?
- 5. Trong WPF là thread thread dispatcher.begininvoke chủ đề an toàn?
- 6. Chủ đề SecureRandom có an toàn không?
- 7. Chủ đề java.util.Hashtable có an toàn không?
- 8. NSTimer có phải là chủ đề an toàn không?
- 9. Cách kiểm tra an toàn chủ đề
- 10. Xuất bản an toàn khi giá trị được đọc theo các phương thức đã đồng bộ
- 11. Chủ đề NSPersistentStoreCoordinator có an toàn không?
- 12. Cách tạo chủ đề an toàn EntityManagerFactory?
- 13. An toàn chủ đề trong ASP.Net MVC
- 14. Chủ đề DocumentBuilder.parse() có an toàn không?
- 15. Phương pháp lớp và an toàn chủ đề (NSJSONSerialization)
- 16. Chủ đề libuv có an toàn không?
- 17. Chủ đề của bảng Guava có an toàn khi bản đồ sao lưu của nó là an toàn không?
- 18. Đảm bảo rằng mã của tôi là an toàn chủ đề
- 19. an toàn Chủ đề và các biến địa phương
- 20. Thực hiện ghi nhật ký an toàn theo chủ đề
- 21. Chủ đề an toàn trong F #
- 22. Là chủ đề cơ sở dữ liệu Sqlite an toàn
- 23. An toàn chủ đề của SocketOutputStream
- 24. Làm thế nào an toàn chủ đề là V4L2?
- 25. Chủ đề sử dụng an toàn của System.Configuration
- 26. Trình phân tích ngày an toàn theo chủ đề
- 27. Trong SignalR là chủ đề Hub.Context có an toàn không?
- 28. NHibernate an toàn chủ đề với phiên
- 29. Java StringBuilder và An toàn Chủ đề
- 30. Có phải Azure CloudTable là chủ đề an toàn không?
Cảm ơn Przemek. Điều đó giải thích. –