ReadOnlyDictionary
chỉ là trình bao bọc xung quanh bất kỳ từ điển nào khác. Như vậy, nó chỉ an toàn với luồng như từ điển cơ bản.
Cụ thể, nếu có một chủ đề sửa đổi từ điển cơ bản trong khi một chủ đề khác đọc từ trình bao bọc, không có sự đảm bảo an toàn.
Nếu bạn muốn có một ReadOnlyDictionary
đó là một cách hiệu quả bất biến từ tất cả góc, bạn có thể tạo một bản sao của từ điển gốc, tạo một wrapper ReadOnlyDictionary
xung quanh đó, và sau đó không giữ một tham chiếu đến các bản sao bất cứ nơi nào. Chỉ với chỉ hoạt động đọc đang diễn ra, thao tác này sẽ an toàn theo luồng. Tất nhiên, nếu các loại khóa hoặc giá trị có thể thay đổi, điều đó sẽ mở ra một mức độ thứ hai là "không an toàn theo chủ đề" để lo lắng.
Nguồn
2012-12-03 13:25:58
Sao chép từ tài liệu Microsoft: Toàn bộ chủ đề an toàn và có thể được sử dụng đồng thời từ nhiều chủ đề. –
@KenCheung: Không rõ tại sao nhận xét của bạn có liên quan. Câu hỏi chỉ ra rằng OP đã nhận thức được 'ConcurrentDictionary <,>', nhưng hỏi về sự an toàn của 'ReadOnlyDictionary <,>'. –