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;
}