Ссылка пространства пользователя OSAtomic.h
Это предпочтительные версии атомарных операций и операций синхронизации. Их реализация настраивается во время начальной загрузки для платформы, включая поздно повреждающиеся опечатки фиксирует по мере необходимости. Они ориентированы на многопотоковое исполнение.
WARNING: все адреса, переданные этим функциям, должны быть «естественно выровнены», т.е. * int32_t
указатели должны быть 32-разрядные выровненный (низкие 2 бита адреса, обнуляет), и int64_t
указатели должны быть 64-разрядные выровненный (низкие 3 бита адреса, обнуляет.)
Обратите внимание на то, что некоторые версии атомарных функций включают барьеры памяти, и некоторые не делают. Барьеры строго упорядочивают доступ к памяти на слабо упорядоченной архитектуре, такой как PPC. Все загрузки и хранилища, появляющиеся (в последовательном порядке программы) перед барьером, как гарантируют, завершатся перед любой загрузкой или хранилищем, появляющимся после барьера.
В однопроцессорной системе работа барьера обычно нет. В многопроцессорной системе барьер может быть довольно дорогим на некоторых платформах, таким как PPC.
Большая часть кода должна использовать барьерные функции, чтобы гарантировать, что должным образом синхронизируется память, совместно использованная потоками. Например, если Вы хотите инициализировать совместно используемую структуру данных и затем атомарно постепенно увеличить переменную, чтобы указать, что инициализация завершена, необходимо использовать OSAtomicIncrement32Barrier
гарантировать что хранилища к Вашей структуре данных, завершенной перед атомарным инкрементом.
Аналогично, потребитель той структуры данных должен использовать OSAtomicDecrement32Barrier
, чтобы гарантировать, что их загрузки структуры не выполняются перед атомарным декрементом. С другой стороны, при простом постепенном увеличении глобального счетчика тогда это безопасно и потенциально быстрее для использования OSAtomicIncrement32
.
Если Вы не уверены, который версия использовать, предпочтите варианты барьера, поскольку они более безопасны.
Спин-блокировка и работы с очередями всегда включают барьер.
Для версии пространства ядра этого заголовка посмотрите OSAtomic.h (Kernel Framework)
Включенные заголовки
<stddef.h>
<sys/cdefs.h>
<stdint.h>
<stdbool.h>
<Availability.h>
Эти спин-блокировки используют барьеры памяти как требуется для синхронизации доступа к общей памяти, защищенной блокировкой.
-
Блокирует спин-блокировку
Объявление
Objective C
void OSSpinLockLock( volatile OSSpinLock *__lock );
Обсуждение
Несмотря на то, что работа блокировки вращается, она использует различные стратегии отступить, если блокировка сохранена, делая ее неуязвимой для большинства динамических взаимоблокировок смены приоритетов.
-
Блокирует спин-блокировку, если она не блокировала бы
Объявление
Objective C
bool OSSpinLockTry( volatile OSSpinLock *__lock );
Возвращаемое значение
Возвраты
false
если блокировка была уже сохранена другим потоком,true
если это взяло блокировку успешно. -
Разблокировал спин-блокировку
Объявление
Objective C
void OSSpinLockUnlock( volatile OSSpinLock *__lock );
-
Барьер памяти.
Объявление
Objective C
void OSMemoryBarrier( void );
Обсуждение
Эта функция служит обоими барьер записи и чтение.
Эти подпрограммы управляют отдельно соединенными списками FIFO.
-
Исключите элемент из очереди из списка.
Объявление
Objective C
void* OSAtomicFifoDequeue( OSFifoQueueHead *__list, size_t __offset);
Параметры
__list
Список, в котором Вы хотите ставить в очередь элемент.
__offset
Параметр «смещения» является смещением (в байтах) поля ссылки с начала поставленной в очередь структуры данных (
__new
). Поле ссылки должно быть типом указателя.__offset
оцените должно быть то же для всей постановки в очередь и исключения из очереди операций на той же очереди, даже если различные типы структуры ставятся в очередь на той очереди. Использованиеoffsetset()
, определенный вstddef.h
распространенный способ указать__offset
значение.Возвращаемое значение
Возвращает самый старый ставивший в очередь элемент, или
NULL
если список пуст.Обсуждение
Барьеры памяти включены по мере необходимости для разрешения ориентированного на многопотоковое исполнение доступа к элементу очереди.
-
Ставьте в очередь элемент на список.
Объявление
Objective C
void OSAtomicFifoEnqueue( OSFifoQueueHead *__list, void *__new, size_t __offset);
Параметры
__list
Список, в котором Вы хотите ставить в очередь элемент.
__new
Элемент для добавления.
__offset
Параметр «смещения» является смещением (в байтах) поля ссылки с начала поставленной в очередь структуры данных (
__new
). Поле ссылки должно быть типом указателя.__offset
оцените должно быть то же для всей постановки в очередь и исключения из очереди операций на той же очереди, даже если различные типы структуры ставятся в очередь на той очереди. Использованиеoffsetset()
, определенный вstddef.h
распространенный способ указать__offset
значение.Обсуждение
Барьеры памяти включены по мере необходимости для разрешения ориентированного на многопотоковое исполнение доступа к элементу очереди.
Эти подпрограммы управляют отдельно соединенными списками LIFO.
-
Исключите элемент из очереди из списка.
Объявление
Objective C
void* OSAtomicDequeue( OSQueueHead *__list, size_t __offset);
Параметры
__list
Список, в котором Вы хотите ставить в очередь элемент.
__offset
Параметр «смещения» является смещением (в байтах) поля ссылки с начала поставленной в очередь структуры данных (
__new
). Поле ссылки должно быть типом указателя.__offset
оцените должно быть то же для всей постановки в очередь и исключения из очереди операций на той же очереди, даже если различные типы структуры ставятся в очередь на той очереди. Использованиеoffsetset()
, определенный вstddef.h
распространенный способ указать__offset
значение.Возвращаемое значение
Возвращает последний раз ставивший в очередь элемент, или
NULL
если список пуст.Обсуждение
Барьеры памяти включены по мере необходимости для разрешения ориентированного на многопотоковое исполнение доступа к элементу очереди.
-
Ставьте в очередь элемент на список.
Объявление
Objective C
void OSAtomicEnqueue( OSQueueHead *__list, void *__new, size_t __offset);
Параметры
__list
Список, в котором Вы хотите ставить в очередь элемент.
__new
Элемент для добавления.
__offset
Параметр «смещения» является смещением (в байтах) поля ссылки с начала поставленной в очередь структуры данных (
__new
). Поле ссылки должно быть типом указателя.__offset
оцените должно быть то же для всей постановки в очередь и исключения из очереди операций на той же очереди, даже если различные типы структуры ставятся в очередь на той очереди. Использованиеoffsetset()
, определенный вstddef.h
распространенный способ указать__offset
значение.Обсуждение
Барьеры памяти включены по мере необходимости для разрешения ориентированного на многопотоковое исполнение доступа к элементу очереди.
Если подкачка произошла, функции в этой группе возвращают true. Существует несколько версий, в зависимости от типа данных и на том, используется ли барьер.
-
Сравните и подкачайте для 32-разрядных значений.
Объявление
Objective C
bool OSAtomicCompareAndSwap32( int32_t __oldValue, int32_t __newValue, volatile int32_t *__theValue );
Возвращаемое значение
Возвращает TRUE на соответствии, FALSE иначе.
Обсуждение
Эта функция сравнивает значение в
__oldValue
к значению в ячейке памяти, на которую ссылаются__theValue
. Если значения соответствуют, эта функция хранит значение от__newValue
в ту ячейку памяти атомарно. -
Сравните и подкачайте для 32-разрядных значений с барьером.
Объявление
Objective C
bool OSAtomicCompareAndSwap32Barrier( int32_t __oldValue, int32_t __newValue, volatile int32_t *__theValue );
Возвращаемое значение
Возвращает TRUE на соответствии, FALSE иначе.
Обсуждение
Эта функция сравнивает значение в
__oldValue
к значению в ячейке памяти, на которую ссылаются__theValue
. Если значения соответствуют, эта функция хранит значение от__newValue
в ту ячейку памяти атомарно.Эта функция эквивалентна
OSAtomicCompareAndSwap32
за исключением того, что это также представляет барьер. -
Сравните и подкачайте для
uint64_t
значения.Объявление
Objective C
bool OSAtomicCompareAndSwap64( int64_t __oldValue, int64_t __newValue, volatile int64_t *__theValue );
Возвращаемое значение
Возвращает TRUE на соответствии, FALSE иначе.
Обсуждение
Эта функция сравнивает значение в
__oldValue
к значению в ячейке памяти, на которую ссылаются__theValue
. Если значения соответствуют, эта функция хранит значение от__newValue
в ту ячейку памяти атомарно. -
Сравните и подкачайте для
uint64_t
значения.Объявление
Objective C
bool OSAtomicCompareAndSwap64Barrier( int64_t __oldValue, int64_t __newValue, volatile int64_t *__theValue );
Возвращаемое значение
Возвращает TRUE на соответствии, FALSE иначе.
Обсуждение
Эта функция сравнивает значение в
__oldValue
к значению в ячейке памяти, на которую ссылаются__theValue
. Если значения соответствуют, эта функция хранит значение от__newValue
в ту ячейку памяти атомарно.Эта функция эквивалентна
OSAtomicCompareAndSwap64
за исключением того, что это также представляет барьер. -
Сравните и подкачайте для
int
значения.Объявление
Objective C
bool OSAtomicCompareAndSwapInt( int __oldValue, int __newValue, volatile int *__theValue );
Возвращаемое значение
Возвращает TRUE на соответствии, FALSE иначе.
Обсуждение
Эта функция сравнивает значение в
__oldValue
к значению в ячейке памяти, на которую ссылаются__theValue
. Если значения соответствуют, эта функция хранит значение от__newValue
в ту ячейку памяти атомарно.Эта функция эквивалентна
OSAtomicCompareAndSwap32
. -
Сравните и подкачайте для
int
значения.Объявление
Objective C
bool OSAtomicCompareAndSwapIntBarrier( int __oldValue, int __newValue, volatile int *__theValue );
Возвращаемое значение
Возвращает TRUE на соответствии, FALSE иначе.
Обсуждение
Эта функция сравнивает значение в
__oldValue
к значению в ячейке памяти, на которую ссылаются__theValue
. Если значения соответствуют, эта функция хранит значение от__newValue
в ту ячейку памяти атомарно.Эта функция эквивалентна
OSAtomicCompareAndSwapInt
за исключением того, что это также представляет барьер.Эта функция эквивалентна
OSAtomicCompareAndSwap32Barrier
. -
Сравните и подкачайте для
long
значения.Объявление
Objective C
bool OSAtomicCompareAndSwapLong( long __oldValue, long __newValue, volatile long *__theValue );
Возвращаемое значение
Возвращает TRUE на соответствии, FALSE иначе.
Обсуждение
Эта функция сравнивает значение в
__oldValue
к значению в ячейке памяти, на которую ссылаются__theValue
. Если значения соответствуют, эта функция хранит значение от__newValue
в ту ячейку памяти атомарно.Эта функция эквивалентна
OSAtomicCompareAndSwap32
на 32-разрядной архитектуре, илиOSAtomicCompareAndSwap64
на 64-разрядной архитектуре. -
Сравните и подкачайте для
long
значения.Объявление
Objective C
bool OSAtomicCompareAndSwapLongBarrier( long __oldValue, long __newValue, volatile long *__theValue );
Возвращаемое значение
Возвращает TRUE на соответствии, FALSE иначе.
Обсуждение
Эта функция сравнивает значение в
__oldValue
к значению в ячейке памяти, на которую ссылаются__theValue
. Если значения соответствуют, эта функция хранит значение от__newValue
в ту ячейку памяти атомарно.Эта функция эквивалентна
OSAtomicCompareAndSwapLong
за исключением того, что это также представляет барьер.Эта функция эквивалентна
OSAtomicCompareAndSwap32
на 32-разрядной архитектуре, илиOSAtomicCompareAndSwap64
на 64-разрядной архитектуре. -
Сравните и подкачайте указатели.
Объявление
Objective C
bool OSAtomicCompareAndSwapPtr( void *__oldValue, void *__newValue, void * volatile *__theValue );
Возвращаемое значение
Возвращает TRUE на соответствии, FALSE иначе.
Обсуждение
Эта функция сравнивает указатель, сохраненный в
__oldValue
к указателю в ячейке памяти, на которую ссылаются__theValue
. Если указатели соответствуют, эта функция хранит указатель от__newValue
в ту ячейку памяти атомарно. -
Сравните и подкачайте указатели с барьером.
Объявление
Objective C
bool OSAtomicCompareAndSwapPtrBarrier( void *__oldValue, void *__newValue, void * volatile *__theValue );
Возвращаемое значение
Возвращает TRUE на соответствии, FALSE иначе.
Обсуждение
Эта функция сравнивает указатель, сохраненный в
__oldValue
к указателю в ячейке памяти, на которую ссылаются__theValue
. Если указатели соответствуют, эта функция хранит указатель от__newValue
в ту ячейку памяти атомарно.Эта функция эквивалентна
OSAtomicCompareAndSwapPtr
за исключением того, что это также представляет барьер. -
Атомарный тест и ясный
Объявление
Objective C
bool OSAtomicTestAndClear( uint32_t __n, volatile void *__theAddress );
Возвращаемое значение
Возвращает исходное значение протестированного бита.
Обсуждение
Эта функция тестирует немного в значении, на которое ссылаются
__theAddress
и если это не очищено, очищает его. Бит выбран значением__n
. Биты пронумерованы в порядке, начинающемся с бита 1 как бит самый низкоуровневый.Например, если
__theAddress
точки к 64-разрядному значению, для сравнения значения самого высокого бита Вы указали бы64
для__n
. -
Атомарный тест и ясный
Объявление
Objective C
bool OSAtomicTestAndClearBarrier( uint32_t __n, volatile void *__theAddress );
Возвращаемое значение
Возвращает исходное значение протестированного бита.
Обсуждение
Эта функция тестирует немного в значении, на которое ссылаются
__theAddress
и если это не очищено, очищает его. Бит выбран значением__n
. Биты пронумерованы в порядке, начинающемся с бита 1 как бит самый низкоуровневый.Например, если
__theAddress
точки к 64-разрядному значению, для сравнения значения самого высокого бита Вы указали бы64
для__n
.Эта функция эквивалентна
OSAtomicTestAndSet
за исключением того, что это также представляет барьер. -
Атомарный тест и набор
Объявление
Objective C
bool OSAtomicTestAndSet( uint32_t __n, volatile void *__theAddress );
Возвращаемое значение
Возвращает исходное значение протестированного бита.
Обсуждение
Эта функция тестирует немного в значении, на которое ссылаются
__theAddress
и если это не установлено, наборы это. Бит выбран значением__n
. Биты пронумерованы в порядке, начинающемся с бита 1 как бит самый низкоуровневый.Например, если
__theAddress
точки к 64-разрядному значению, для сравнения значения самого высокого бита Вы указали бы64
для__n
. -
Атомарный тест и набор с барьером
Объявление
Objective C
bool OSAtomicTestAndSetBarrier( uint32_t __n, volatile void *__theAddress );
Возвращаемое значение
Возвращает исходное значение протестированного бита.
Обсуждение
Эта функция тестирует немного в значении, на которое ссылаются
__theAddress
и если это не установлено, наборы это. Бит выбран значением__n
. Биты пронумерованы в порядке, начинающемся с бита 1 как бит самый низкоуровневый.Например, если
__theAddress
точки к 64-разрядному значению, для сравнения значения самого высокого бита Вы указали бы64
для__n
.Эта функция эквивалентна
OSAtomicTestAndSet
за исключением того, что это также представляет барьер.
Функции в этой группе прибывают в четыре варианта для каждой работы: с и без барьеров и функций, возвращающих исходное значение или значение результата работы.
Версии «Orig» возвращают исходное значение, (перед работой); non-Orig версии возвращают значение после работы. Все разделены на уровни поверх OSAtomicCompareAndSwap32
и подобный.
-
Атомарный поразрядный AND двух 32-разрядных значений.
Объявление
Objective C
int32_t OSAtomicAnd32( uint32_t __theMask, volatile uint32_t *__theValue );
Возвращаемое значение
Возвращает новое значение.
Обсуждение
Эта функция выполняет поразрядный AND значения, данного
__theMask
со значением в ячейке памяти, на которую ссылаются__theValue
, хранение результата назад к той ячейке памяти атомарно. -
Атомарный поразрядный AND двух 32-разрядных значений с барьером.
Объявление
Objective C
int32_t OSAtomicAnd32Barrier( uint32_t __theMask, volatile uint32_t *__theValue );
Возвращаемое значение
Возвращает новое значение.
Обсуждение
Эта функция выполняет поразрядный AND значения, данного
__theMask
со значением в ячейке памяти, на которую ссылаются__theValue
, хранение результата назад к той ячейке памяти атомарно.Эта функция эквивалентна
OSAtomicAnd32
за исключением того, что это также представляет барьер. -
Атомарный поразрядный AND двух 32-разрядных значений, возвращающихся исходный.
Объявление
Objective C
int32_t OSAtomicAnd32Orig( uint32_t __theMask, volatile uint32_t *__theValue );
Возвращаемое значение
Возвращает исходное значение, на которое ссылаются
__theValue
.Обсуждение
Эта функция выполняет поразрядный AND значения, данного
__theMask
со значением в ячейке памяти, на которую ссылаются__theValue
, хранение результата назад к той ячейке памяти атомарно. -
Атомарный поразрядный AND двух 32-разрядных значений, возвращающихся исходный с барьером.
Объявление
Objective C
int32_t OSAtomicAnd32OrigBarrier( uint32_t __theMask, volatile uint32_t *__theValue );
Возвращаемое значение
Возвращает исходное значение, на которое ссылаются
__theValue
.Обсуждение
Эта функция выполняет поразрядный AND значения, данного
__theMask
со значением в ячейке памяти, на которую ссылаются__theValue
, хранение результата назад к той ячейке памяти атомарно.Эта функция эквивалентна
OSAtomicAnd32Orig
за исключением того, что это также представляет барьер. -
Атомарное битовое «ИЛИ» двух 32-разрядных значений.
Объявление
Objective C
int32_t OSAtomicOr32( uint32_t __theMask, volatile uint32_t *__theValue );
Возвращаемое значение
Возвращает новое значение.
Обсуждение
Эта функция выполняет битовое «ИЛИ» значения, данного
__theMask
со значением в ячейке памяти, на которую ссылаются__theValue
, хранение результата назад к той ячейке памяти атомарно. -
Атомарное битовое «ИЛИ» двух 32-разрядных значений с барьером.
Объявление
Objective C
int32_t OSAtomicOr32Barrier( uint32_t __theMask, volatile uint32_t *__theValue );
Возвращаемое значение
Возвращает новое значение.
Обсуждение
Эта функция выполняет битовое «ИЛИ» значения, данного
__theMask
со значением в ячейке памяти, на которую ссылаются__theValue
, хранение результата назад к той ячейке памяти атомарно.Эта функция эквивалентна
OSAtomicOr32
за исключением того, что это также представляет барьер. -
Атомарное битовое «ИЛИ» двух 32-разрядных значений, возвращающихся исходный.
Объявление
Objective C
int32_t OSAtomicOr32Orig( uint32_t __theMask, volatile uint32_t *__theValue );
Возвращаемое значение
Возвращает исходное значение, на которое ссылаются
__theValue
.Обсуждение
Эта функция выполняет битовое «ИЛИ» значения, данного
__theMask
со значением в ячейке памяти, на которую ссылаются__theValue
, хранение результата назад к той ячейке памяти атомарно. -
Атомарное битовое «ИЛИ» двух 32-разрядных значений, возвращающихся исходный с барьером.
Объявление
Objective C
int32_t OSAtomicOr32OrigBarrier( uint32_t __theMask, volatile uint32_t *__theValue );
Возвращаемое значение
Возвращает исходное значение, на которое ссылаются
__theValue
.Обсуждение
Эта функция выполняет битовое «ИЛИ» значения, данного
__theMask
со значением в ячейке памяти, на которую ссылаются__theValue
, хранение результата назад к той ячейке памяти атомарно.Эта функция эквивалентна
OSAtomicOr32Orig
за исключением того, что это также представляет барьер. -
Атомарный поразрядный XOR двух 32-разрядных значений.
Объявление
Objective C
int32_t OSAtomicXor32( uint32_t __theMask, volatile uint32_t *__theValue );
Возвращаемое значение
Возвращает новое значение.
Обсуждение
Эта функция выполняет поразрядный XOR значения, данного
__theMask
со значением в ячейке памяти, на которую ссылаются__theValue
, хранение результата назад к той ячейке памяти атомарно. -
Атомарный поразрядный XOR двух 32-разрядных значений с барьером.
Объявление
Objective C
int32_t OSAtomicXor32Barrier( uint32_t __theMask, volatile uint32_t *__theValue );
Возвращаемое значение
Возвращает новое значение.
Обсуждение
Эта функция выполняет поразрядный XOR значения, данного
__theMask
со значением в ячейке памяти, на которую ссылаются__theValue
, хранение результата назад к той ячейке памяти атомарно.Эта функция эквивалентна
OSAtomicXor32
за исключением того, что это также представляет барьер. -
Атомарный поразрядный XOR двух 32-разрядных значений, возвращающихся исходный.
Объявление
Objective C
int32_t OSAtomicXor32Orig( uint32_t __theMask, volatile uint32_t *__theValue );
Возвращаемое значение
Возвращает исходное значение, на которое ссылаются
__theValue
.Обсуждение
Эта функция выполняет поразрядный XOR значения, данного
__theMask
со значением в ячейке памяти, на которую ссылаются__theValue
, хранение результата назад к той ячейке памяти атомарно. -
Атомарный поразрядный XOR двух 32-разрядных значений, возвращающихся исходный с барьером.
Объявление
Objective C
int32_t OSAtomicXor32OrigBarrier( uint32_t __theMask, volatile uint32_t *__theValue );
Возвращаемое значение
Возвращает исходное значение, на которое ссылаются
__theValue
.Обсуждение
Эта функция выполняет поразрядный XOR значения, данного
__theMask
со значением в ячейке памяти, на которую ссылаются__theValue
, хранение результата назад к той ячейке памяти атомарно.Эта функция эквивалентна
OSAtomicXor32Orig
за исключением того, что это также представляет барьер.
Все функции в этой группе возвращают новое значение.
-
Атомарно добавляет два 32-разрядных значения.
Объявление
Objective C
int32_t OSAtomicAdd32( int32_t __theAmount, volatile int32_t *__theValue );
Возвращаемое значение
Возвращает новое значение.
Обсуждение
Эта функция добавляет значение, данное
__theAmount
к значению в ячейке памяти, на которую ссылаются__theValue
, хранение результата назад к той ячейке памяти атомарно. -
Атомарно добавляет два 32-разрядных значения.
Объявление
Objective C
int32_t OSAtomicAdd32Barrier( int32_t __theAmount, volatile int32_t *__theValue );
Возвращаемое значение
Возвращает новое значение.
Обсуждение
Эта функция добавляет значение, данное
__theAmount
к значению в ячейке памяти, на которую ссылаются__theValue
, хранение результата назад к той ячейке памяти атомарно.Эта функция эквивалентна
OSAtomicAdd32
за исключением того, что это также представляет барьер. -
Атомарно добавляет два 64-разрядных значения.
Объявление
Objective C
int64_t OSAtomicAdd64( int64_t __theAmount, volatile int64_t *__theValue );
Обсуждение
Эта функция добавляет значение, данное
__theAmount
к значению в ячейке памяти, на которую ссылаются__theValue
, хранение результата назад к той ячейке памяти атомарно. -
Атомарно добавляет два 64-разрядных значения с барьером.
Объявление
Objective C
int64_t OSAtomicAdd64Barrier( int64_t __theAmount, volatile int64_t *__theValue );
Возвращаемое значение
Возвращает новое значение.
Обсуждение
Эта функция добавляет значение, данное
__theAmount
к значению в ячейке памяти, на которую ссылаются__theValue
, хранение результата назад к той ячейке памяти атомарно.Эта функция эквивалентна
OSAtomicAdd64
за исключением того, что это также представляет барьер. -
Атомарно постепенно уменьшает 32-разрядное значение.
Объявление
Objective C
__header_always_inline int32_t OSAtomicDecrement32( volatile int32_t *__theValue )
-
Атомарно постепенно увеличивает 32-разрядное значение с барьером.
Объявление
Objective C
__header_always_inline int32_t OSAtomicDecrement32Barrier( volatile int32_t *__theValue )
Возвращаемое значение
Возвращает новое значение.
Обсуждение
Эта функция эквивалентна
OSAtomicDecrement32
за исключением того, что это также представляет барьер. -
Атомарно постепенно уменьшает 64-разрядное значение.
Объявление
Objective C
__header_always_inline int64_t OSAtomicDecrement64( volatile int64_t *__theValue )
Возвращаемое значение
Возвращает новое значение.
Обсуждение
Эта функция эквивалентна
OSAtomicIncrement64
за исключением того, что это также представляет барьер. -
Атомарно постепенно уменьшает 64-разрядное значение с барьером.
Объявление
Objective C
__header_always_inline int64_t OSAtomicDecrement64Barrier( volatile int64_t *__theValue )
Возвращаемое значение
Возвращает новое значение.
Обсуждение
Эта функция эквивалентна
OSAtomicDecrement64
за исключением того, что это также представляет барьер. -
Атомарно постепенно увеличивает 32-разрядное значение.
Объявление
Objective C
__header_always_inline int32_t OSAtomicIncrement32( volatile int32_t *__theValue )
-
Атомарно постепенно увеличивает 32-разрядное значение с барьером.
Объявление
Objective C
__header_always_inline int32_t OSAtomicIncrement32Barrier( volatile int32_t *__theValue )
Возвращаемое значение
Возвращает новое значение.
Обсуждение
Эта функция эквивалентна
OSAtomicIncrement32
за исключением того, что это также представляет барьер. -
Атомарно постепенно увеличивает 64-разрядное значение.
Объявление
Objective C
__header_always_inline int64_t OSAtomicIncrement64( volatile int64_t *__theValue )
-
Атомарно постепенно увеличивает 64-разрядное значение с барьером.
Объявление
Objective C
__header_always_inline int64_t OSAtomicIncrement64Barrier( volatile int64_t *__theValue )
Возвращаемое значение
Возвращает новое значение.
Обсуждение
Эта функция эквивалентна
OSAtomicIncrement64
за исключением того, что это также представляет барьер.
Посмотрите раздел Overview выше для документации уровня заголовка.
-
Структура данных для главы очереди FIFO.
Объявление
Objective C
#if defined(__x86_64__) typedef volatile struct { void *opaque1; void *opaque2; int opaque3; } __attribute__ ((aligned (16))) OSFifoQueueHead; #else typedef volatile struct { void *opaque1; void *opaque2; int opaque3; } OSFifoQueueHead; #endif
Обсуждение
Необходимо всегда инициализировать структуру главы очереди FIFO с вектором инициализации
OS_ATOMIC_FIFO_QUEUE_INIT
перед использованием.Оператор импорта
-
Структура данных для главы очереди.
Объявление
Objective C
#if defined(__x86_64__) typedef volatile struct { void *opaque1; long opaque2; } __attribute__ ((aligned (16))) OSQueueHead; #else typedef volatile struct { void *opaque1; long opaque2; } OSQueueHead; #endif
Обсуждение
Необходимо всегда инициализировать структуру главы очереди с вектором инициализации
OS_ATOMIC_QUEUE_INIT
перед использованием.Оператор импорта
-
Тип данных для спин-блокировки.
Объявление
Objective C
typedef int32_t OSSpinLock;
Обсуждение
Необходимо всегда инициализировать спин-блокировку к
OS_SPINLOCK_INIT
перед использованием его.Оператор импорта
Objective C
#include <OSAtomic.h>;
Доступность
Доступный в OS X v10.7 и позже.
Посмотрите раздел Overview выше для документации уровня заголовка.
-
Объявление
Objective C
#define OS_ATOMIC_FIFO_QUEUE_INIT { NULL, NULL, 0 } #define OS_ATOMIC_QUEUE_INIT { NULL, 0 } #define OS_SPINLOCK_INIT 0
Константы
-
OS_ATOMIC_FIFO_QUEUE_INIT
OS_ATOMIC_FIFO_QUEUE_INIT
Вектор инициализации для главы очереди FIFO.
-
OS_ATOMIC_QUEUE_INIT
OS_ATOMIC_QUEUE_INIT
Вектор инициализации для главы очереди.
-
OS_SPINLOCK_INIT
OS_SPINLOCK_INIT
Значение по умолчанию для
OSSpinLock
.Соглашение состоит в том, что разблокированный нуль, заблокированный является ненулевым.
Доступный в OS X v10.7 и позже.
-