次のプロパティを適用するのはかなり難しいように思われるので、非アトミックオブジェクトに対してどのようにstd::atomic_ref
効率的に(std::mutex
オブジェクトごとに1 つ)実装できるのかと思います。
atomic_refを介してオブジェクトに適用されるアトミック操作は、同じオブジェクトを参照する他のatomic_refを介して適用されるアトミック操作に対してアトミックです。
特に、次のコード:
void set(std::vector<Big> &objs, size_t i, const Big &val) {
std::atomic_ref RefI{objs[i]};
RefI.store(val);
}
同じタイプのすべてのオブジェクトによって共有される大きなマスターロックでない限りstd::atomic_ref
、同じものを毎回選択する必要があるため、実装は非常に難しいようstd::mutex
です。
何か不足していますか?または、各オブジェクトは実装std::atomic_ref
を担当するため、アトミックであるか、std::mutex
?