Нужно ли использовать атомарную <bool> для «выходной» переменной bool?

Мне нужно установить флаг для другого потока, чтобы выйти. Этот другой поток время от времени проверяет флаг выхода. Должен ли я использовать атомарный для флага или достаточно простого bool и почему (с примером того, что именно может пойти не так, если я использую простой bool)?

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

Ответы на вопрос(3)

Ваш ответ на вопрос