Có, trên x86 và x86-64, miễn là giá trị bạn đang đọc được căn chỉnh chính xác. 32-bit int
s, chúng cần được căn chỉnh trên một ranh giới 4 byte để truy cập là atomic khi đọc hoặc viết, hầu như luôn luôn xảy ra trừ khi bạn đi ra ngoài để tạo ra các số int
s chưa được gán (nói , bằng cách sử dụng một cấu trúc đóng gói hoặc bằng cách làm số học/con trỏ với bộ đệm byte).
Bạn cũng có thể muốn khai báo biến của mình là volatile
để trình biên dịch sẽ tạo mã sẽ tìm nạp lại biến từ bộ nhớ mỗi khi được truy cập. Điều đó sẽ ngăn không cho nó tối ưu hóa chẳng hạn như lưu vào bộ đệm trong một thanh ghi khi nó có thể bị thay đổi bởi một luồng khác.
Nguồn
2011-09-28 17:15:05
có thể trùng lặp của [Là C++ Đọc và Viết của một nguyên tử int] (http://stackoverflow.com/questions)/54188/are-c-đọc-và-viết-of-an-int-nguyên tử) – Sjoerd