Vâng, điều đầu tiên trong tâm trí của tôi là làm thế nào để đảm bảo rằng nếu pydispatcher hoặc pubsub có an toàn hay không. pubsub có thể là một chút khó khăn hoặc phức tạp để tìm ra nhưng pydispatcher có vẻ đơn giản để nhận ra. Sau đó, tôi bắt đầu tự hỏi làm thế nào để tìm ra nếu một mô-đun python thread-safe hay không. Bất kỳ chẩn đoán nào?Làm thế nào để đánh giá một mô-đun python là an toàn thread hay không?
Trả lời
Từ quan điểm lý thuyết: Không có thuật toán nào thực hiện điều này cho một chương trình tùy ý. Nó giống như halting problem.
Bạn có thể kiểm tra các mô-đun đã sử dụng và kiểm tra xem các mô đun này có được đảm bảo an toàn không. Nhưng không có cách chung để kiểm tra mã byte của một mô-đun cho an toàn luồng.
Đối với việc xác định nếu một thư viện hoặc áp dụng là chủ đề an toàn, không tác giả đầu vào, tôi sẽ tìm kiếm cơ chế đề đồng bộ hóa: http://effbot.org/zone/thread-synchronization.htm hoặc rằng nó có chứa các phương pháp luồng: http://docs.python.org/library/threading.html
Tuy nhiên, không ai trong số đó sẽ cho bạn biết cách sử dụng API theo cách an toàn. Thực tế bất cứ điều gì có thể được nhồi bên trong một đối tượng thread và truyền đạt để sử dụng các đối tượng đồng bộ hóa thread.
Đối với một cái gì đó như pubsub người ta có thể tạo ra một lớp kết thúc tốt đẹp các API và giao tiếp qua hàng đợi độc quyền. Nếu pubsub sống trong cùng một chuỗi như wx chẳng hạn, thì một API có thể được tạo ra để tiêm các thông điệp vào Hàng đợi bằng cách sử dụng một API luồng để gửi tin nhắn. Sau đó, một vòng lặp pubsub hoặc bộ đếm thời gian có thể được theo dõi hàng đợi. Sau đó nó sẽ gửi tin nhắn. Một trong những vấn đề với gói một cái gì đó như pubsub là một nơi nào đó nó sẽ yêu cầu bỏ phiếu. Nó có thể được thực hiện trong suốt nếu việc bỏ phiếu được thực hiện bởi bộ tính giờ. Mỗi thread sẽ phải cấp phát một bộ đếm thời gian để nhận tin nhắn nếu pubsub không nằm trong chủ đề đó. Có thể có nhiều cách tiếp cận thanh lịch hơn cho điều này, nhưng tôi không biết về chúng.
- 1. Làm thế nào an toàn thread là enum trong java?
- 2. an toàn thread unordered_map
- 3. ActiveScaffold thread-an toàn
- 4. Trong WPF là thread thread dispatcher.begininvoke chủ đề an toàn?
- 5. Là C# '??' thread điều hành an toàn?
- 6. Làm cách nào để gắn thẻ cho một lớp là an toàn chỉ luồng (hay không)?
- 7. .NET - Thread thread Queue.Enqueue có an toàn không?
- 8. Có phải là an toàn thread inet_aton của Perl không?
- 9. TODOConnection của thread có an toàn không?
- 10. Mà Unix không có một malloc thread-an toàn?
- 11. Làm thế nào để chứng minh arraylist không phải là thread an toàn với một bài kiểm tra?
- 12. malloc() là không reentrant nhưng thread-an toàn?
- 13. Cách đánh dấu một hội đồng .net là an toàn?
- 14. Lý do tại sao Hibernate's sessionFactory là thread an toàn
- 15. Làm thế nào để thực hiện hàng đợi an toàn thread
- 16. Làm thế nào an toàn là MD5 và SHA1
- 17. serialization đối tượng java - thread an toàn?
- 18. có phải là websockets an toàn hay không?
- 19. Làm thế nào để truy cập điều khiển WPF C# trong thread an toàn?
- 20. python đánh giá các biểu thức "là" như thế nào?
- 21. Chuẩn C mktime thread có an toàn trên Linux không?
- 22. iBatis SqlMapClient và an toàn thread
- 23. là + = trong chuỗi python có an toàn không?
- 24. Có an toàn cho init thread an toàn với VC2010 không?
- 25. Làm thế nào để tăng an toàn asio fork
- 26. Delphi: Làm thế nào để tạo ra một chủ đề an toàn toàn cầu TList?
- 27. BinaryFormatter Serialize và Deserialize thread có an toàn không?
- 28. Trình duyệt có an toàn thread-ren không?
- 29. Làm thế nào an toàn chủ đề là V4L2?
- 30. Làm sao jekyll có thể đánh giá xem đó là một trang hay một bài đăng?
Anh ấy nói "bất kỳ chẩn đoán nào", anh ấy không tìm kiếm giải pháp chính xác, chung chung. Tôi cũng nghi ngờ anh ấy đang nói về việc nhìn vào bytecode. – agf