Czy muszę używać atomowej <bool> dla zmiennej wyjściowej „exit”?

Muszę ustawić flagę, aby inny wątek mógł wyjść. Ten inny wątek od czasu do czasu sprawdza flagę wyjścia. Czy muszę użyć atomowej flagi, czy wystarczy zwykły bool i dlaczego (na przykład, co może się nie udać, gdy używam zwykłego bool)?

#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();
}

questionAnswers(3)

yourAnswerToTheQuestion