Я пытаюсь создать тупую версию блокировки спина. Просматривая Интернет, я столкнулся с инструкцией по сборке в x86, которая используется, чтобы дать подсказку процессору, который в настоящий момент работает в этом процессоре. В руководстве Intel и другой информации указано, что
The processor uses this hint
to avoid the memory order violation in most situations, which greatly improves
processor performance. For this reason, it is recommended that a PAUSE instruction
be placed in all spin-wait loops. The documentation also mentions that
"wait(some delay)" is the pseudo implementation of the instruction.
Последняя строка вышеприведенного абзаца интуитивно понятна. Если мне не удастся схватить замок, я должен подождать некоторое время, прежде чем снова схватить замок.
Однако, что мы имеем в виду под нарушением порядка памяти в случае блокировки спина??? "Нарушение порядка памяти" означает неправильную умозрительную загрузку/сохранение инструкций после блокировки отпирания??
FYI, вопрос о спин-блокировке задан перед переполнением стека, но вопрос о нарушении порядка памяти остается без ответа... по крайней мере для моего понимания