Giả sử tôi có ứng dụng C++ 11 trong đó hai luồng ghi đến vị trí bộ nhớ khác nhau nhưng gần đó, sử dụng các con trỏ đơn giản cho các kiểu nguyên thủy. Tôi có thể chắc chắn rằng cả hai ghi này sẽ kết thúc trong bộ nhớ cuối cùng (có lẽ sau khi cả hai đã đạt đến một boost::barrier
), hoặc là có một nguy cơ mà cả hai lõi CPU giữ dòng bộ nhớ cache của riêng mình có chứa dữ liệu đó, và lõi thứ hai đỏ bừng sửa đổi của nó để RAM sẽ ghi đè và hoàn tác sửa đổi được thực hiện bởi lần ghi đầu tiên?Đồng thời ghi vào các vị trí khác nhau trong cùng một dòng bộ nhớ cache
Tôi hy vọng rằng sự kết hợp bộ nhớ cache sẽ đảm bảo điều này cho tôi trong mọi tình huống và trên tất cả các thiết lập phù hợp với mô hình bộ nhớ C++ 11, nhưng tôi muốn chắc chắn.
Ví dụ về giao thức kết hợp bộ nhớ cache: [MESI] (http://en.wikipedia.org/wiki/MESI_protocol). –