2

Я прочитал документацию CPP и понял, чтоЕсть ли преимущество в использовании atom_init над atomic_store?

Atomic_init
-это не атомный и склонен к гонке данных (так он несет проблему) -иза термин «инициализация» в инструкции, я считаю, что он должен использоваться для инициализации переменной в первый раз.

Atomic_store -stores значение атомарно в атомарной переменной

Так почему бы нам не использовать атомное хранилище для инициализации переменной? Если да, то почему у них есть atom_init?

Есть ли какое-либо преимущество в использовании atom_init над atomic_store?

ответ

3

Как правило, вам не нужно атомизированно инициализировать что-либо, потому что это означает, что несколько потоков конкурируют за использование неинициализированной памяти.

Как правило, память является однопоточной во время построения/инициализации, но затем она «публикуется» таким образом, что другие потоки могут начать ее использовать.

В случае глобальных атомов, как правило, вы инициализируете их раньше, прежде чем еще существуют потоки.

Преимущества использования Atomic_init состоят в том, чтобы явно обозначать инициализацию и обходить небольшое количество служебных данных.