Здравствуйте, boluba, Вы писали:
B>Здравствуйте, dshe, Вы писали:
D>>Верно.
D>>В догонку: инструкции процессора могут выполняться неатоматно, что уж говорить о байткодах.
D>> <skiped>
B>B>inc mem
B>
D>>уже нет.
B>Правильно ли я понимаю, что без префикса lock команда будет запущена заново после возврата в этот поток исполнения?
B>Хотя это скорее для другого форума вопрос.
Не совсем. Префикс lock не играет существенной роли, если машина однопроцессорная, поскольку аппаратные прерывания не могут прервать выполнение инструкции где-то на середине (хотя, возможно, для векторных инструкций есть нюансы). Однако если машина многопроцессорная, то пока один процессор (выполняя инструкцию inc) вычитав данные выполняет арифметическое сложение, другой процессор может вклиниться и тоже обратиться к памяти (считав еще неизмененные данные или записав значение, которое в последствии будет перезаписано). Префикс lock предотвращает такую ситуацию просто блокируя доступ к общей памяти для других процессоров на время выполнения текущей инструкции.