Eu tenho que usar atomic <bool> para a variável bool "exit"?

Eu preciso definir um sinalizador para outro segmento para sair. Esse outro segmento verifica o sinalizador de saída de tempos em tempos. Eu tenho que usar atomic para a bandeira ou apenas um bool simples é suficiente e por que (com um exemplo do que exatamente pode dar errado se eu usar bool simples)?

#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