Является ли инкремент целым атомарным в x86? [Дубликат]
This question already has an answer here:
Can num++ be atomic for 'int num'? 13 answersНа многоядерном компьютере с архитектурой x86, скажем, поток, выполняющийся на core1, увеличивает целочисленную переменнуюa
в то же время поток на ядре 2 также увеличивает его. Учитывая, что начальное значениеa
было 0, это всегда будет2
в конце? Или это может иметь какую-то другую ценность? Предположим, чтоa
объявлен какvolatile
и мы не используем атомарные переменные (такие как atomic & lt; & gt; в C ++ и встроенные атомарные операции в gcc).
Если значениеa
действительно будет всегда 2 в таком случае, означает ли это, чтоlong int
в x86-64 также будет иметь такое же свойство, то естьa
всегда будет 2 в конце?