Spec-Zone .ru
спецификации, руководства, описания, API

Библиотека разработчика Mac

Разработчик

Ссылка пространства пользователя OSAtomic.h

Опции
Развертывание Target:

На этой странице

Ссылка пространства пользователя 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 и позже.