2017-01-11 5 views
1

Вот документация для станда :: атомной: http://en.cppreference.com/w/cpp/atomic/atomicЧто такое атомная переменная C++?

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

Что я хочу знать, как это работает и каковы ограничения их использования?

+1

Любой ответ, который вы получите, будет очень долгим. Хорошим началом является изучение возможностей блокировки. Оттуда вы можете начать читать стандарт C++, начиная с 29 библиотеки Atomic operations [atomics], и есть много возможностей для переваривания. – AndyG

+0

он делает больше, чем генерирует специальные машинные инструкции. Он также предотвращает переупорядочение загрузки/хранения. Ссылка на видео в ответе ниже действительно должна быть соблюдена - вы будете поражены тем, что узнаете. Вам понадобится 2 часа. –

+0

Спасибо. Я буду смотреть видео. Я не понимал, что это так сложно. – tylerjw

ответ

1

Эта тема действительно может заполнить книгу. Вероятно, вы не получите четких ответов в этом формате.

ЗАКАНЧИВАТЬ Herb Sutters видео, это действительно чистейшие дискуссии, которые я видел на эту тему:

https://herbsutter.com/2013/02/11/atomic-weapons-the-c-memory-model-and-modern-hardware/

Смотрите ссылки на «Часть 1» и «Часть 2».