1) Нет, потоки свободны для чтения / записи везде в памяти приложения.(Хорошо, можно защитить некоторую часть памяти, например, память программного кода, чтобы защитить ее.)
2) Любое ядро ЦП имеет собственный кеш, а данные сначала копируются и затем изменяются в строке кеша, после чегоскопировано в соответствующее (непредсказуемое) время обратно в ОЗУ.Существуют специальные инструкции процессора (например, блокировка), которые должны выполняться вместе с другими инструкциями (например, cmpxchg) для обеспечения чтения, записи или изменения атомарной памяти ( interlocked ), некоторые инструкции по умолчанию являются атомарными.
Помните: атомный (блокированный) доступ к ОЗУ может иметь длину всего 1, 2, 4 или 8 (и 16 при 64-битном ЦП).Для более длинных структур памяти вы должны обеспечить соответствующий механизм блокировки (синхронизации), такой как Критический раздел , чтобы избежать неконтролируемого доступа к памяти несколькими потоками.