Muss ich Atomic Load / Store explizit aufrufen?

C ++ 11 stellte diestd::atomic<> Vorlagenbibliothek. Die Norm legt diestore() undload() Operationen, um eine Variable, die von mehr als einem Thread geteilt wird, atomar zu setzen / zu erhalten.

Meine Frage ist, ob Zuweisungs- und Zugriffsoperationen auch atomar sind.

Ist nämlich:

std::atomic<bool> stop(false);
...
void thread_1_run_until_stopped()
{
    if(!stop.load())
        /* do stuff */
}

void thread_2_set_stop()
{        
    stop.store(true);
}

Gleichwertig:

void thread_1_run_until_stopped()
{
    if(!stop)
        /* do stuff */
}

void thread_2_set_stop()
{        
    stop = true;
}

Antworten auf die Frage(2)

Ihre Antwort auf die Frage