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