Why don't compilers merge redundant std::atomic writes? Why don't compilers merge redundant std::atomic writes? multithreading multithreading