Được biết, tham chiếu mất 4 Byte bộ nhớ trong bộ xử lý 32 bit và 8 Byte - trong bộ xử lý 64 bit. Vì vậy, bộ vi xử lý đảm bảo rằng duy nhất đọc từ và ghi vào bộ nhớ trong gia số của kích thước từ tự nhiên của máy sẽ được thực hiện nguyên tử. Mặt khác có 2 phương pháp trong lớp đan cài:Sử dụng Interlocked.Exchange để cập nhật tài liệu tham khảo và Int32
public static int Exchange(
ref int location1,
int value
)
và
public static T Exchange<T>(
ref T location1,
T value
)
where T : class
Vì vậy, câu hỏi là tại sao Interlocked.Exchange là cần thiết cho Int32 và với nhiều loại tài liệu tham khảo? Nó có thể được thực hiện một cách an toàn bằng cách sử dụng nhiệm vụ đơn giản vì nó là nguyên tử?
Cảm ơn bạn rất nhiều. Bây giờ đã đủ rõ ràng rồi. –
Tôi biết điều này rõ ràng là một năm sau đó, nhưng nếu có thể, bạn có thể vui lòng xem lại điều này? Trang web này http://igoro.com/archive/volatile-keyword-in-c-memory-model-explained/ dường như ngụ ý rằng tất cả các ghi trong C# đã biến động. – user981225