int data {}
atomic<bool> syncer {false};
void foo()
{
syncer = true; //---> I could have used a mutex here and writelock
data = 5;
syncer = false;
}
void foo2()
{
if (syncer) // If I used a mutex I could have read lock here
return 0;
return data;
}
I always use atomics instead of mutexes. But today in a code review, I was told to use mutexes. Then I explained that atomics may not lock and this is an advantage over mutexes.
So, both my reviewer and I ended up with a question: What is the use of mutexes? Should we ban mutexes in our code guidelines and use atomics all the time? Is there a advantage of mutexes over atomics?