Muss ich atomic <bool> für die Bool-Variable "exit" verwenden?

Ich muss ein Flag setzen, damit ein anderer Thread beendet wird. Dieser andere Thread überprüft von Zeit zu Zeit das Exit-Flag. Muss ich atomic für das Flag verwenden oder reicht nur ein einfacher Bool und warum (mit einem Beispiel, was genau schief gehen kann, wenn ich einfachen Bool verwende)?

#include <future>
bool exit = false;
void thread_fn()
{
    while(!exit)
    {
        //do stuff
        if(exit) break;
        //do stuff
    }
}
int main()
{
    auto f = std::async(std::launch::async, thread_fn);
    //do stuff
    exit = true;
    f.get();
}

Antworten auf die Frage(3)

Ihre Antwort auf die Frage