Tôi tự hỏi làm thế nào có thể std::atomic_ref
được thực hiện một cách hiệu quả ( std::mutex
mỗi đối tượng) cho các đối tượng phi nguyên tử vì thuộc tính sau có vẻ khá khó thực thi:
Các hoạt động nguyên tử được áp dụng cho một đối tượng thông qua một nguyên tử là các nguyên tử đối với các hoạt động nguyên tử được áp dụng thông qua bất kỳ nguyên tử nào khác tham chiếu đến cùng một đối tượng.
Cụ thể, đoạn mã sau:
void set(std::vector<Big> &objs, size_t i, const Big &val) {
std::atomic_ref RefI{objs[i]};
RefI.store(val);
}
Có vẻ khá khó để thực hiện vì std::atomic_ref
sẽ cần phải bằng cách nào đó chọn mỗi lần giống nhau std::mutex
(trừ khi đó là một khóa chính lớn được chia sẻ bởi tất cả các đối tượng cùng loại).
Tui bỏ lỡ điều gì vậy? Hoặc mỗi đối tượng chịu trách nhiệm thực hiện std::atomic_ref
và do đó là nguyên tử hoặc mang một std::mutex
?