3

Почему нам нужен префикс блокировки перед CMPXCHG в архитектуре intel. см. Для справки http://courses.engr.illinois.edu/ece390/archive/spr2002/books/labmanual/inst-ref-cmpxchg.htmlПочему нам нужен префикс блокировки перед CMPXCHG

то, что я не уверен, каковы последствия, если дон, т использовать замок. потому что между загрузкой значения в eax и исключением LOCK CMPXCHG значение может быть изменено независимо от префикса блокировки, потому что значение загрузки в eax и LOCK CMPXCHG - две инструкции.

Сказать, если я не использую CMPXCHG, самое худшее, что может случиться, это то, что мне нужно снова вращаться.

ответ

3
  • CMXCHG действительно атомная (утверждает блокировку шины) на многопроцессорной системе только тогда, когда он с префиксом LOCK. В эти дни используются протоколы когерентности кэширования на основе протоколов, что устраняет необходимость в ограждении (блокировка шины).
  • Приходит ко второй части вопроса (значение в любом случае будет изменено). ДА в этом случае команда CMPXCHG терпит неудачу, но тем не менее по-прежнему является атомной по отношению ко всем процессорам.

Нижняя линия: Замок приставка делает CMPXCHG многопроцессорная инструкцию барьера.