Như Jon Skeet đã đề cập, hiện có các bộ sưu tập "an toàn chủ đề" trong không gian tên System.Collections.Concurrent trong .NET 4.
Một trong những lý do khiến không có bộ sưu tập đồng thời tồn tại (ít nhất là dự đoán của tôi) trước đây.NET Framework phiên bản là nó là rất khó để đảm bảo an toàn thread, ngay cả với một bộ sưu tập đồng thời.
(Đây không phải là hoàn toàn đúng như một số bộ sưu tập cung cấp một phương pháp đồng bộ để trả lại một bộ sưu tập chủ đề an toàn từ một bộ sưu tập an toàn phi thread vì vậy có một số bộ sưu tập chủ đề an toàn ...)
Ví dụ giả định một người có một từ điển an toàn chủ đề - nếu một người chỉ muốn chèn vào nếu Khóa không tồn tại thì trước tiên người ta sẽ truy vấn bộ sưu tập để xem liệu Khóa có tồn tại hay không, sau đó người ta sẽ thực hiện chèn nếu khóa không tồn tại. Hai hoạt động này không phải là luồng an toàn mặc dù, giữa truy vấn của ContainsKey và thao tác Thêm một luồng khác có thể đã thực hiện chèn khóa đó để có điều kiện chủng tộc.
Nói cách khác, hoạt động của bộ sưu tập là an toàn chỉ - nhưng việc sử dụng nó không nhất thiết. Trong trường hợp này, người ta cần chuyển đổi trở lại các kỹ thuật khóa truyền thống (mutex/monitor/semaphore ...) để đạt được an toàn luồng để bộ sưu tập đồng thời đã mua cho bạn không có gì về an toàn đa luồng (nhưng có thể tệ hơn cho hiệu năng) .
Phản hồi tuyệt vời - Tôi sẽ để điều này 'không được trả lời' trong một thời gian ngắn để giữ nó trên radar. Nếu bất kỳ ai có thêm bất kỳ liên kết nào đến các bài viết về trạng thái trước hoặc sau .Net 4.0 về chủ đề này thì vui lòng bao gồm. Cảm ơn mọi người. – Andrew