Являются ли операции чтения и записи в C++ атомарными? [дубликат] ⇐ C++
-
Гость
Являются ли операции чтения и записи в C++ атомарными? [дубликат]
У меня есть два потока: один обновляет int, а другой читает его. Это статистическое значение, для которого порядок чтения и записи не имеет значения.
Мой вопрос: нужно ли мне вообще синхронизировать доступ к этому многобайтовому значению? Или, другими словами, часть записи может быть завершена и прервана, а затем произойдет чтение.
Например, представьте себе значение = 0x0000FFFF, которое получает увеличенное значение 0x00010000.
Есть ли моменты, когда значение выглядит как 0x0001FFFF, о чем мне следует беспокоиться? Разумеется, чем крупнее шрифт, тем больше вероятность того, что подобное произойдет.
Я всегда синхронизировал эти типы доступа, но мне было любопытно, что думает сообщество.
У меня есть два потока: один обновляет int, а другой читает его. Это статистическое значение, для которого порядок чтения и записи не имеет значения.
Мой вопрос: нужно ли мне вообще синхронизировать доступ к этому многобайтовому значению? Или, другими словами, часть записи может быть завершена и прервана, а затем произойдет чтение.
Например, представьте себе значение = 0x0000FFFF, которое получает увеличенное значение 0x00010000.
Есть ли моменты, когда значение выглядит как 0x0001FFFF, о чем мне следует беспокоиться? Разумеется, чем крупнее шрифт, тем больше вероятность того, что подобное произойдет.
Я всегда синхронизировал эти типы доступа, но мне было любопытно, что думает сообщество.
Мобильная версия