Здравствуйте, tnikolai, Вы писали:
T>Пусть в указателе хранилось значение А. Один из процессоров записывает в него значение В, а другой процессор считывает значение этого указателя. T>Какие значения могут быть считаны? Только А и В? Может ли случится что в этот момент запишутся только первые 2 байта В, а вторые останутся от А, или ещё какая нибудь проблемма.
Если рассматривать абстрактную платформу, то проблемы могут быть любыми.
Например, если у нас сегментная модель, и ширина указателя больше, чем ширина шины данных — запросто получится смесь.
А на нормальных платформах специально для этого есть средства блокировки — машинные инструкции типа LOCK и апишные функции типа InterlockedXXXXX (см. документацию к своей платформе).
Но даже если ты избавишься от гонок при чтении-записи одной переменной, — придётся удостовериться, что не остались гонки большего масштаба. Вообще, lock-free программирование — чертовски увлекательно и нетривиально.