Sự khác nhau giữa thread- nhận thức và thread- an toàn là gì?Sự khác biệt giữa nhận biết luồng và an toàn chỉ là gì?
Trả lời
lịch sự http://sreekalyan.blogspot.com/2007/01/thread-safe-and-thread-aware.html
Chủ đề Aware Tại bất kỳ thời điểm nào, tại hầu hết một thread có thể hoạt động trên các đối tượng. Các đối tượng là nhận thức được các chủ đề xung quanh nó và bảo vệ chính nó khỏi các chủ đề bằng cách đặt tất cả các chủ đề trong một hàng đợi. Vì chỉ có thể có một chuỗi hoạt động trên đối tượng tại bất kỳ thời điểm nào, đối tượng sẽ luôn giữ nguyên trạng thái của nó. Sẽ không có bất kỳ vấn đề đồng bộ hóa nào.
Chủ đề an toàn: Tại một thời điểm nhất định, nhiều chủ đề có thể hoạt động trên đối tượng. Đối tượng biết cách xử lý chúng. Nó có quyền truy cập đồng bộ đúng vào các tài nguyên được chia sẻ của nó. Nó có thể lưu giữ dữ liệu trạng thái của nó trong môi trường đa luồng này (nghĩa là nó sẽ không rơi vào trạng thái trung gian và/hoặc không xác định). Sử dụng đối tượng này trong môi trường đa luồng là an toàn.
Sử dụng đối tượng không nhận biết luồng và không an toàn chỉ có thể dẫn đến dữ liệu ngẫu nhiên và không chính xác và ngoại lệ bí ẩn (do cố gắng truy cập đối tượng khi chủ đề đang sử dụng và không ổn định) ở giữa trạng thái ngay khi truy cập chuỗi thứ hai).
Tôi sẽ tin rằng một chức năng thực hiện khóa mutex riêng của nó là chuỗi an toàn, nhưng có lẽ không phải là luồng nhận biết.
- 1. Sự khác nhau giữa đề an toàn và an toàn
- 2. Sự khác biệt giữa sed và awk là gì?
- 3. Sự khác biệt giữa dispatch_get_global_queue và dispatch_queue_create là gì?
- 4. Sự khác biệt giữa luồng và trình đọc trong Java là gì?
- 5. Sự khác biệt giữa Kiểm soát luồng và Kiểm soát tắc nghẽn trong TCP là gì?
- 6. là gì sự khác biệt giữa SQL_Latin1_General_CP1_CI_AS và SQL_Latin1_General_CP1_CI_AI
- 7. Sự khác biệt giữa đúc và co giật là gì?
- 8. Sự khác biệt chính giữa Sinatra và Ramaze là gì?
- 9. Sự khác biệt giữa JavaBean và POJO là gì?
- 10. Sự khác biệt giữa crontab và cronjob là gì?
- 11. Sự khác biệt giữa khẳng định và static_assert là gì?
- 12. Sự khác biệt giữa "1.0f" và "1.f" là gì?
- 13. Trong Ember.js, sự khác biệt giữa [] và Ember.A ([]) là gì?
- 14. Sự khác biệt giữa chẩn đoán và metaheuristics là gì?
- 15. Sự khác biệt giữa while (true) và loop là gì?
- 16. Sự khác biệt giữa tệp .so và .lo là gì?
- 17. SBT - Sự khác biệt giữa tên và id là gì?
- 18. Sự khác biệt giữa is_a và instanceof là gì?
- 19. Sự khác biệt giữa yếu và không an toàn_unretained
- 20. Sự khác biệt giữa dealloc và viewdidunload là gì?
- 21. Sự khác biệt giữa Raphael và gRaphael là gì?
- 22. Sự khác biệt giữa execl và execv là gì?
- 23. Sự khác biệt giữa instanceof và Class.isAssignableFrom (...) là gì?
- 24. Sự khác biệt giữa RadGrid.Rebind() và RadGrid.MasterTableView.Rebind() là gì?
- 25. Sự khác biệt giữa Caching và Memoization là gì?
- 26. Sự khác biệt giữa nghỉ và thoát là gì?
- 27. Sự khác biệt giữa uint và System.UInt32 là gì?
- 28. Sự khác biệt giữa INTERSECT và WHERE IN là gì?
- 29. Sự khác biệt giữa gói android.opengl và javax.microedition.khronos.opengles là gì?
- 30. Sự khác biệt giữa tính đơn điệu và sự chấp nhận của một heuristic là gì?