Руководство по Ada (Ada 2022)
C.6.1 Пакет System.Atomic_Operations
Определяемый языком пакет System.Atomic_Operations является родительским для набора дочерних модулей, предоставляющих средства для работы с объектами атомных типов и поддержки блокировочной синхронизации. Подпрограммы этой подсистемы являются внутренними подпрограммами (см. 6.3.1), чтобы обеспечить удобный доступ к машинным операциям, которые могут предоставить эти возможности, если они доступны в целевой среде.
Статическая семантика
Пакет библиотеки System.Atomic_Operations имеет следующее объявление:
package System.Atomic_Operations
with Pure, Nonblocking is
end System.Atomic_Operations;
with Pure, Nonblocking is
end System.Atomic_Operations;
System.Atomic_Operations служит родительским модулем для других определяемых языком модулей библиотеки, которые работают с атомными объектами; его объявление пустое.
Вызов подпрограммы считается бесключевым, если подпрограмма гарантированно возвращается из вызова, сохраняя процессор логической потоковой нити занятым на протяжении всего вызова.
В каждом дочернем пакете предоставляется функция Is_Lock_Free(...), чтобы проверить, могут ли все операции дочернего пакета быть обеспечены без блокировки для данного объекта. Is_Lock_Free возвращает True, если операции, определённые в дочернем пакете, являются бесключевыми при применении к объекту, обозначенному Item, и Is_Lock_Free возвращает False в противном случае.