Предположим, вы знаете, что у вас есть один процессор.Предположим также, что в вашем процессоре есть атомарная инструкция BBSC (ветвь на бите установлена и установлена), которая не может быть прервана и которая ветвится, если бит установлен и не ветвится, очищается и устанавливает бит
. Затем вы можете выполнитьВы блокируете, используя такую инструкцию
BBSS DID_NOT_GET_LOCK, #1,LOCK_LOCATION
; Critical Section
; . .. . . . .
MOV #0, LOCK_LOCATION ; End critical section
DID_NOT_GET_LOCK:
Блокировку становится просто реализовать в такой однопроцессорной системе.
Если вы добавите несколько микропроцессоров в микс,эта система блокировки с треском проваливается.Эта инструкция, которую я описываю, имеет по крайней мере два доступа к памяти:
If (бит установлен);Тест памяти Goto Destination Else Set Bit;Набор памяти
Если у вас несколько процессоров, более чем один процесс мог видеть, что бит очищен одновременно, и может войти в критическую секцию.