Re: Одновременное чтение/запись указателя в многопроцес. сис
От: Кодт Россия  
Дата: 23.09.09 09:39
Оценка: +1 :)
Здравствуйте, tnikolai, Вы писали:

T>Пусть в указателе хранилось значение А. Один из процессоров записывает в него значение В, а другой процессор считывает значение этого указателя.

T>Какие значения могут быть считаны? Только А и В? Может ли случится что в этот момент запишутся только первые 2 байта В, а вторые останутся от А, или ещё какая нибудь проблемма.

Если рассматривать абстрактную платформу, то проблемы могут быть любыми.
Например, если у нас сегментная модель, и ширина указателя больше, чем ширина шины данных — запросто получится смесь.

А на нормальных платформах специально для этого есть средства блокировки — машинные инструкции типа LOCK и апишные функции типа InterlockedXXXXX (см. документацию к своей платформе).

Но даже если ты избавишься от гонок при чтении-записи одной переменной, — придётся удостовериться, что не остались гонки большего масштаба. Вообще, lock-free программирование — чертовски увлекательно и нетривиально.
Перекуём баги на фичи!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.