Re[6]: Не делимые операции потоков
От: dshe  
Дата: 16.06.06 07:01
Оценка: 3 (1)
Здравствуйте, boluba, Вы писали:

B>Здравствуйте, dshe, Вы писали:


D>>Верно.

D>>В догонку: инструкции процессора могут выполняться неатоматно, что уж говорить о байткодах.
D>> <skiped>
B>
B>inc mem
B>

D>>уже нет.

B>Правильно ли я понимаю, что без префикса lock команда будет запущена заново после возврата в этот поток исполнения?

B>Хотя это скорее для другого форума вопрос.

Не совсем. Префикс lock не играет существенной роли, если машина однопроцессорная, поскольку аппаратные прерывания не могут прервать выполнение инструкции где-то на середине (хотя, возможно, для векторных инструкций есть нюансы). Однако если машина многопроцессорная, то пока один процессор (выполняя инструкцию inc) вычитав данные выполняет арифметическое сложение, другой процессор может вклиниться и тоже обратиться к памяти (считав еще неизмененные данные или записав значение, которое в последствии будет перезаписано). Префикс lock предотвращает такую ситуацию просто блокируя доступ к общей памяти для других процессоров на время выполнения текущей инструкции.
--
Дмитро
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.