На многоядерной машине x86 скажите, что поток, выполняющийся на core1, приращает целочисленную переменную a
, в то же время поток на ядре 2 также увеличивает его. Учитывая, что начальное значение a
равно 0, всегда было бы 2
в конце? Или это может иметь какую-то другую ценность? Предположим, что a
объявлен как volatile
, и мы не используем атомные переменные (такие как atom < > of С++ и встроенные атомарные операции в gcc).
Если значение a
действительно было бы всегда 2 в таком случае, означает ли это, что a long int
в x86-64 также будет иметь одно и то же свойство, то есть a
всегда будет равным 2 в конец?