Nếu tôi đang truy cập một kiểu số nguyên (ví dụ: dài, int, bool, v.v ...) trong nhiều chủ đề, tôi có cần sử dụng cơ chế đồng bộ hóa hay không mutex để khóa chúng. Sự hiểu biết của tôi là như các loại nguyên tử, tôi không cần phải khóa truy cập vào một chủ đề duy nhất, nhưng tôi thấy rất nhiều mã ra khỏi đó mà không sử dụng khóa. Việc lập lại mã như vậy cho thấy rằng có một hiệu suất đáng kể cho việc sử dụng khóa, vì vậy tôi không muốn. Vì vậy, nếu mục tôi truy cập tương ứng với số nguyên chiều rộng của bus (ví dụ 4 byte trên bộ xử lý 32 bit), tôi có cần khóa truy cập vào nó khi nó đang được sử dụng trên nhiều luồng không? Đặt một cách khác, nếu luồng A đang ghi vào biến số nguyên X cùng lúc với chuỗi B đang đọc từ cùng một biến, có thể là chuỗi B có thể kết thúc một vài byte của giá trị trước đó được trộn lẫn với một vài byte giá trị được viết? Có phải phụ thuộc vào kiến trúc này không, ví dụ: ok cho 4 số nguyên byte trên hệ thống 32 bit nhưng không an toàn trên số nguyên 8 byte trên hệ thống 64 bit?Tôi có cần sử dụng khóa với số nguyên trong chuỗi C++
Chỉnh sửa: Chỉ cần nhìn thấy điều này related post giúp bit công bằng.
Cảm ơn vì điều này, InterlockedExchange có lẽ là chức năng mà tôi đang tìm kiếm, chỉ có một chủ đề thực sự ghi vào biến được đề cập, trong khi những người khác chỉ đọc nó. –