Семафор (программирование): различия между версиями

[отпатрулированная версия][отпатрулированная версия]
Содержимое удалено Содержимое добавлено
м →‎Семафоры в Linux: уточнение
м уточнение, источники
Строка 992:
 
==== В архитектуре ARM ====
В архитектуре [[ARM (архитектура)|ARMv7]] для синхронизации памяти между процессорами используются так называемые локальный и глобальный эксклюзивные мониторы, представляющие собой автоматы состояний, контролирующие атомарный доступ к ячейкам памяти{{sfn|ARM|loc=1.2.1 LDREX and STREX|p=4}}{{sfn|ARM|loc=1.2.2 Exclusive monitors|p=5}}. Атомарное чтение ячейки памяти может осуществляться с помощью инструкции <code>LDREX</code>{{sfn|ARM|loc=1.2.1 LDREX and STREX, LDREX|p=4}}, а атомарная запись — через инструкцию <code>STREX</code>, которая также возвращает флаг успеха операции<ref name="arm_sync_primitives">{{arfsfn|ARM|loc=1.2.1 SynchronizationLDREX Primitives|ARMand SynchronizationSTREX, PrimitivesSTREX|ap=ARM.4}}</ref>.
 
Для уменьшения значения семафора необходимо дождаться, пока его счётчик не станет больше нуля. Ожидание может быть реализовано разными способами: