Me pregunto cómo se std::atomic_ref
puede implementar de manera eficiente (uno std::mutex
por objeto) para objetos no atómicos, ya que la siguiente propiedad parece bastante difícil de aplicar:
Las operaciones atómicas aplicadas a un objeto a través de atomic_ref son atómicas con respecto a las operaciones atómicas aplicadas a través de cualquier otra atomic_ref que haga referencia al mismo objeto.
En particular, el siguiente código:
void set(std::vector<Big> &objs, size_t i, const Big &val) {
std::atomic_ref RefI{objs[i]};
RefI.store(val);
}
Parece bastante difícil de implementar, ya std::atomic_ref
que de alguna manera necesitaría elegir cada vez lo mismo std::mutex
(a menos que sea un gran bloqueo maestro compartido por todos los objetos del mismo tipo).
¿Me estoy perdiendo de algo? ¿O cada objeto es responsable de implementar std::atomic_ref
y, por lo tanto, ser atómico o llevar un std::mutex
?