Функции атомарного обновления RenderScript,Функции атомарного обновления RenderScript,Функции атомарного обновления RenderScript,Функции атомарного обновления RenderScript

Обзор

Чтобы обновить значения, общие для нескольких потоков, используйте функции ниже. Они гарантируют атомарное обновление значений, т. е. чтение, обновление и запись в память выполняются в правильном порядке.

Эти функции медленнее, чем их неатомарные эквиваленты, поэтому используйте их только тогда, когда необходима синхронизация.

Обратите внимание, что в RenderScript ваш код, скорее всего, будет выполняться в отдельных потоках, даже если вы не создавали их явно. Среда выполнения RenderScript очень часто разделяет выполнение одного ядра на несколько потоков. Обновление глобальных переменных должно выполняться с помощью атомарных функций. Если возможно, измените свой алгоритм, чтобы вообще избежать их.

Краткое содержание

Функции
рсатомикадд Потокобезопасное дополнение
rsAtomicAnd Потокобезопасный побитовый и
rsAtomicCas Потокобезопасное сравнение и установка
rsAtomicDec Потокобезопасный декремент
rsAtomicInc Потокобезопасное приращение
rsAtomicMax Потокобезопасный максимум
rsAtomicMin Потокобезопасный минимум
rsAtomicOr Потокобезопасный побитовый или
rsAtomicSub Потокобезопасное вычитание
rsAtomicXor Потокобезопасное поразрядное исключающее или

Функции

rsAtomicAdd : Потокобезопасное дополнение.

int32_t rsAtomicAdd (изменчивое int32_t * адрес, значение int32_t ); Добавлено на уровне API 14.
int32_t rsAtomicAdd (летучий uint32_t * адрес, значение uint32_t ); Добавлено на уровне API 20.
Параметры
адрес Адрес значения, которое необходимо изменить.
ценить Сумма для добавления.
Возврат
Значение *addr перед операцией.

Атомарно добавляет значение к значению по адресу addr, т.е. *addr += value .

rsAtomicAnd : Поточно-безопасный побитовый и

int32_t rsAtomicAnd (изменчивый int32_t * адрес, значение int32_t ); Добавлено на уровне API 14.
int32_t rsAtomicAnd (летучие uint32_t * адрес, значение uint32_t ); Добавлено на уровне API 20.
Параметры
адрес Адрес значения, которое необходимо изменить.
ценить Ценность для и с.
Возврат
Значение *addr перед операцией.

Атомарно выполняет побитовую обработку двух значений, сохраняя результат обратно по адресу addr, т.е. *addr &= value .

rsAtomicCas : Потокобезопасное сравнение и установка

int32_t rsAtomicCas (летучие int32_t * addr, int32_t CompareValue, int32_t newValue); Добавлено на уровне API 14.
uint32_t rsAtomicCas (летучие uint32_t * addr, uint32_t CompareValue, uint32_t newValue); Добавлено на уровне API 14.
Параметры
адрес Адрес значения для сравнения и замены, если тест пройден.
сравнениезначение Значение для проверки *addr.
новое значение Значение для записи, если тест пройден.
Возврат
Значение *addr перед операцией.

Если значение в адресе соответствует значению сравнения, то новоеЗначение записывается в адрес, т.е. if (*addr == compareValue) { *addr = newValue; } .

Вы можете проверить, что значение было записано, проверив, что значение, возвращаемое rsAtomicCas(), равно значению CompareValue.

rsAtomicDec : Потокобезопасное уменьшение

int32_t rsAtomicDec (летучий int32_t * адрес); Добавлено на уровне API 14.
int32_t rsAtomicDec (летучие uint32_t * адрес); Добавлено на уровне API 20.
Параметры
адрес Адрес значения, которое нужно уменьшить.
Возврат
Значение *addr перед операцией.

Атомарно вычитает единицу из значения по адресу addr. Это эквивалентно rsAtomicSub (addr, 1) .

rsAtomicInc : Потокобезопасное приращение

int32_t rsAtomicInc (летучий int32_t * адрес); Добавлено на уровне API 14.
int32_t rsAtomicInc (летучие uint32_t * адрес); Добавлено на уровне API 20.
Параметры
адрес Адрес значения для увеличения.
Возврат
Значение *addr перед операцией.

Атомарно добавляет единицу к значению по адресу addr. Это эквивалентно rsAtomicAdd (addr, 1) .

rsAtomicMax : максимум потокобезопасности.

int32_t rsAtomicMax (изменчивый int32_t * адрес, значение int32_t ); Добавлено на уровне API 14.
uint32_t rsAtomicMax (летучий uint32_t * адрес, значение uint32_t ); Добавлено на уровне API 14.
Параметры
адрес Адрес значения, которое необходимо изменить.
ценить Сравнительная стоимость.
Возврат
Значение *addr перед операцией.

Атомарно устанавливает значение в addr равным максимальному значению *addr и value, т.е. *addr = max(*addr, value) .

rsAtomicMin : минимум потокобезопасности.

int32_t rsAtomicMin (изменчивый int32_t * адрес, значение int32_t ); Добавлено на уровне API 14.
uint32_t rsAtomicMin (изменчивый uint32_t * адрес, значение uint32_t ); Добавлено на уровне API 14.
Параметры
адрес Адрес значения, которое необходимо изменить.
ценить Сравнительная стоимость.
Возврат
Значение *addr перед операцией.

Атомарно устанавливает значение addr равным минимуму *addr и value, т.е. *addr = min(*addr, value) .

rsAtomicOr : Поточно-ориентированный побитовый или

int32_t rsAtomicOr (изменчивое int32_t * адрес, значение int32_t ); Добавлено на уровне API 14.
int32_t rsAtomicOr (летучий uint32_t * адрес, значение uint32_t ); Добавлено на уровне API 20.
Параметры
адрес Адрес значения, которое необходимо изменить.
ценить Значение до или с.
Возврат
Значение *addr перед операцией.

Атомарно выполнять поразрядное или два значения, сохраняя результат по адресу addr, т.е. *addr |= value .

rsAtomicSub : Потокобезопасное вычитание

int32_t rsAtomicSub (изменчивое int32_t * адрес, значение int32_t ); Добавлено на уровне API 14.
int32_t rsAtomicSub (летучий uint32_t * адрес, значение uint32_t ); Добавлено на уровне API 20.
Параметры
адрес Адрес значения, которое необходимо изменить.
ценить Сумма для вычета.
Возврат
Значение *addr перед операцией.

Атомарно вычитает значение из значения по адресу addr, т.е. *addr -= value .

rsAtomicXor : Поточно-ориентированное поразрядное исключающее или

int32_t rsAtomicXor (изменчивое int32_t * адрес, значение int32_t ); Добавлено на уровне API 14.
int32_t rsAtomicXor (летучий uint32_t * адрес, значение uint32_t ); Добавлено на уровне API 20.
Параметры
адрес Адрес значения, которое необходимо изменить.
ценить Значение для xor.
Возврат
Значение *addr перед операцией.

Атомарно выполняет побитовое исключающее ИЛИ двух значений, сохраняя результат по адресу addr, т.е. *addr ^= value .

,

Обзор

Чтобы обновить значения, общие для нескольких потоков, используйте функции ниже. Они гарантируют атомарное обновление значений, т. е. чтение, обновление и запись в память выполняются в правильном порядке.

Эти функции медленнее, чем их неатомарные эквиваленты, поэтому используйте их только тогда, когда необходима синхронизация.

Обратите внимание, что в RenderScript ваш код, скорее всего, будет выполняться в отдельных потоках, даже если вы не создавали их явно. Среда выполнения RenderScript очень часто разделяет выполнение одного ядра на несколько потоков. Обновление глобальных переменных должно выполняться с помощью атомарных функций. Если возможно, измените свой алгоритм, чтобы вообще избежать их.

Краткое содержание

Функции
рсатомикадд Потокобезопасное дополнение
rsAtomicAnd Потокобезопасный побитовый и
rsAtomicCas Потокобезопасное сравнение и установка
rsAtomicDec Потокобезопасный декремент
rsAtomicInc Потокобезопасное приращение
rsAtomicMax Потокобезопасный максимум
rsAtomicMin Потокобезопасный минимум
rsAtomicOr Потокобезопасный побитовый или
rsAtomicSub Потокобезопасное вычитание
rsAtomicXor Потокобезопасное поразрядное исключающее или

Функции

rsAtomicAdd : Потокобезопасное дополнение.

int32_t rsAtomicAdd (изменчивое int32_t * адрес, значение int32_t ); Добавлено на уровне API 14.
int32_t rsAtomicAdd (изменчивый uint32_t * адрес, значение uint32_t ); Добавлено на уровне API 20.
Параметры
адрес Адрес значения, которое необходимо изменить.
ценить Сумма для добавления.
Возврат
Значение *addr перед операцией.

Атомарно добавляет значение к значению по адресу addr, т.е. *addr += value .

rsAtomicAnd : Поточно-безопасный побитовый и

int32_t rsAtomicAnd (изменчивый int32_t * адрес, значение int32_t ); Добавлено на уровне API 14.
int32_t rsAtomicAnd (летучие uint32_t * адрес, значение uint32_t ); Добавлено на уровне API 20.
Параметры
адрес Адрес значения, которое необходимо изменить.
ценить Ценность для и с.
Возврат
Значение *addr перед операцией.

Атомарно выполняет побитовую обработку двух значений, сохраняя результат обратно по адресу addr, т.е. *addr &= value .

rsAtomicCas : Потокобезопасное сравнение и установка

int32_t rsAtomicCas (летучие int32_t * addr, int32_t CompareValue, int32_t newValue); Добавлено на уровне API 14.
uint32_t rsAtomicCas (летучие uint32_t * addr, uint32_t CompareValue, uint32_t newValue); Добавлено на уровне API 14.
Параметры
адрес Адрес значения для сравнения и замены, если тест пройден.
сравнениезначение Значение для проверки *addr.
новое значение Значение для записи, если тест пройден.
Возврат
Значение *addr перед операцией.

Если значение в адресе соответствует значению сравнения, то новоеЗначение записывается в адрес, т.е. if (*addr == compareValue) { *addr = newValue; } .

Вы можете проверить, что значение было записано, проверив, что значение, возвращаемое rsAtomicCas(), равно значению CompareValue.

rsAtomicDec : Потокобезопасное уменьшение

int32_t rsAtomicDec (летучий int32_t * адрес); Добавлено на уровне API 14.
int32_t rsAtomicDec (летучие uint32_t * адрес); Добавлено на уровне API 20.
Параметры
адрес Адрес значения, которое нужно уменьшить.
Возврат
Значение *addr перед операцией.

Атомарно вычитает единицу из значения по адресу addr. Это эквивалентно rsAtomicSub (addr, 1) .

rsAtomicInc : Потокобезопасное приращение

int32_t rsAtomicInc (летучий int32_t * адрес); Добавлено на уровне API 14.
int32_t rsAtomicInc (летучие uint32_t * адрес); Добавлено на уровне API 20.
Параметры
адрес Адрес значения для увеличения.
Возврат
Значение *addr перед операцией.

Атомарно добавляет единицу к значению по адресу addr. Это эквивалентно rsAtomicAdd (addr, 1) .

rsAtomicMax : максимум потокобезопасности.

int32_t rsAtomicMax (изменчивый int32_t * адрес, значение int32_t ); Добавлено на уровне API 14.
uint32_t rsAtomicMax (летучий uint32_t * адрес, значение uint32_t ); Добавлено на уровне API 14.
Параметры
адрес Адрес значения, которое необходимо изменить.
ценить Сравнительная стоимость.
Возврат
Значение *addr перед операцией.

Атомарно устанавливает значение в addr равным максимальному значению *addr и value, т.е. *addr = max(*addr, value) .

rsAtomicMin : минимум потокобезопасности.

int32_t rsAtomicMin (изменчивое int32_t * адрес, значение int32_t ); Добавлено на уровне API 14.
uint32_t rsAtomicMin (изменчивый uint32_t * адрес, значение uint32_t ); Добавлено на уровне API 14.
Параметры
адрес Адрес значения, которое необходимо изменить.
ценить Сравнительная стоимость.
Возврат
Значение *addr перед операцией.

Атомарно устанавливает значение addr равным минимуму *addr и value, т.е. *addr = min(*addr, value) .

rsAtomicOr : Поточно-ориентированный побитовый или

int32_t rsAtomicOr (изменчивый int32_t * адрес, значение int32_t ); Добавлено на уровне API 14.
int32_t rsAtomicOr (летучий uint32_t * адрес, значение uint32_t ); Добавлено на уровне API 20.
Параметры
адрес Адрес значения, которое необходимо изменить.
ценить Значение до или с.
Возврат
Значение *addr перед операцией.

Атомарно выполнять поразрядное или два значения, сохраняя результат по адресу addr, т.е. *addr |= value .

rsAtomicSub : Потокобезопасное вычитание

int32_t rsAtomicSub (изменчивое int32_t * адрес, значение int32_t ); Добавлено на уровне API 14.
int32_t rsAtomicSub (летучий uint32_t * адрес, значение uint32_t ); Добавлено на уровне API 20.
Параметры
адрес Адрес значения, которое необходимо изменить.
ценить Сумма для вычета.
Возврат
Значение *addr перед операцией.

Атомарно вычитает значение из значения по адресу addr, т.е. *addr -= value .

rsAtomicXor : Поточно-ориентированное поразрядное исключающее или

int32_t rsAtomicXor (изменчивый int32_t * адрес, значение int32_t ); Добавлено на уровне API 14.
int32_t rsAtomicXor (летучий uint32_t * адрес, значение uint32_t ); Добавлено на уровне API 20.
Параметры
адрес Адрес значения, которое необходимо изменить.
ценить Значение для xor.
Возврат
Значение *addr перед операцией.

Атомарно выполняет побитовое исключающее ИЛИ двух значений, сохраняя результат по адресу addr, т.е. *addr ^= value .

,

Обзор

Чтобы обновить значения, общие для нескольких потоков, используйте функции ниже. Они гарантируют, что значения обновляются атомарно, т.е. чтение, обновление и запись в память выполняются в правильном порядке.

Эти функции медленнее, чем их неатомарные эквиваленты, поэтому используйте их только тогда, когда необходима синхронизация.

Обратите внимание, что в RenderScript ваш код, скорее всего, будет выполняться в отдельных потоках, даже если вы не создавали их явно. Среда выполнения RenderScript очень часто разделяет выполнение одного ядра на несколько потоков. Обновление глобальных переменных должно выполняться с помощью атомарных функций. Если возможно, измените свой алгоритм, чтобы вообще избежать их.

Краткое содержание

Функции
рсатомикадд Потокобезопасное дополнение
rsAtomicAnd Потокобезопасный побитовый и
rsAtomicCas Потокобезопасное сравнение и установка
rsAtomicDec Потокобезопасный декремент
rsAtomicInc Потокобезопасное приращение
rsAtomicMax Потокобезопасный максимум
rsAtomicMin Потокобезопасный минимум
rsAtomicOr Потокобезопасный побитовый или
rsAtomicSub Потокобезопасное вычитание
rsAtomicXor Потокобезопасное поразрядное исключающее или

Функции

rsAtomicAdd : Потокобезопасное дополнение.

int32_t rsAtomicAdd (изменчивое int32_t * адрес, значение int32_t ); Добавлено на уровне API 14.
int32_t rsAtomicAdd (изменчивый uint32_t * адрес, значение uint32_t ); Добавлено на уровне API 20.
Параметры
адрес Адрес значения, которое необходимо изменить.
ценить Сумма для добавления.
Возврат
Значение *addr перед операцией.

Атомарно добавляет значение к значению по адресу addr, т.е. *addr += value .

rsAtomicAnd : Поточно-безопасный побитовый и

int32_t rsAtomicAnd (изменчивое int32_t * адрес, значение int32_t ); Добавлено на уровне API 14.
int32_t rsAtomicAnd (летучие uint32_t * адрес, значение uint32_t ); Добавлено на уровне API 20.
Параметры
адрес Адрес значения, которое необходимо изменить.
ценить Ценность для и с.
Возврат
Значение *addr перед операцией.

Атомарно выполняет побитовую обработку двух значений, сохраняя результат обратно по адресу addr, т.е. *addr &= value .

rsAtomicCas : Потокобезопасное сравнение и установка

int32_t rsAtomicCas (летучие int32_t * addr, int32_t CompareValue, int32_t newValue); Добавлено на уровне API 14.
uint32_t rsAtomicCas (летучие uint32_t * addr, uint32_t CompareValue, uint32_t newValue); Добавлено на уровне API 14.
Параметры
адрес Адрес значения для сравнения и замены, если тест пройден.
сравнениезначение Значение для проверки *addr.
новое значение Значение для записи, если тест пройден.
Возврат
Значение *addr перед операцией.

Если значение в адресе соответствует значению CompareValue, то новоеЗначение записывается в адрес, т.е. if (*addr == compareValue) { *addr = newValue; } .

Вы можете проверить, что значение было записано, проверив, что значение, возвращаемое rsAtomicCas(), равно значению CompareValue.

rsAtomicDec : Потокобезопасное уменьшение

int32_t rsAtomicDec (летучий int32_t * адрес); Добавлено на уровне API 14.
int32_t rsAtomicDec (летучие uint32_t * адрес); Добавлено на уровне API 20.
Параметры
адрес Адрес значения, которое нужно уменьшить.
Возврат
Значение *addr перед операцией.

Атомарно вычитает единицу из значения по адресу addr. Это эквивалентно rsAtomicSub (addr, 1) .

rsAtomicInc : Потокобезопасное приращение

int32_t rsAtomicInc (летучий int32_t * адрес); Добавлено на уровне API 14.
int32_t rsAtomicInc (летучие uint32_t * адрес); Добавлено на уровне API 20.
Параметры
адрес Адрес значения для увеличения.
Возврат
Значение *addr перед операцией.

Атомарно добавляет единицу к значению по адресу addr. Это эквивалентно rsAtomicAdd (addr, 1) .

rsAtomicMax : максимум потокобезопасности.

int32_t rsAtomicMax (изменчивый int32_t * адрес, значение int32_t ); Добавлено на уровне API 14.
uint32_t rsAtomicMax (летучий uint32_t * адрес, значение uint32_t ); Добавлено на уровне API 14.
Параметры
адрес Адрес значения, которое необходимо изменить.
ценить Сравнительная стоимость.
Возврат
Значение *addr перед операцией.

Атомарно устанавливает значение в addr равным максимальному значению *addr и value, т.е. *addr = max(*addr, value) .

rsAtomicMin : минимум потокобезопасности.

int32_t rsAtomicMin (изменчивое int32_t * адрес, значение int32_t ); Добавлено на уровне API 14.
uint32_t rsAtomicMin (изменчивый uint32_t * адрес, значение uint32_t ); Добавлено на уровне API 14.
Параметры
адрес Адрес значения, которое необходимо изменить.
ценить Сравнительная стоимость.
Возврат
Значение *addr перед операцией.

Атомарно устанавливает значение addr равным минимуму *addr и value, т.е. *addr = min(*addr, value) .

rsAtomicOr : Поточно-ориентированный побитовый или

int32_t rsAtomicOr (изменчивое int32_t * адрес, значение int32_t ); Добавлено на уровне API 14.
int32_t rsAtomicOr (летучий uint32_t * адрес, значение uint32_t ); Добавлено на уровне API 20.
Параметры
адрес Адрес значения, которое необходимо изменить.
ценить Значение до или с.
Возврат
Значение *addr перед операцией.

Атомарно выполнять поразрядное или два значения, сохраняя результат по адресу addr, т.е. *addr |= value .

rsAtomicSub : Потокобезопасное вычитание

int32_t rsAtomicSub (изменчивое int32_t * адрес, значение int32_t ); Добавлено на уровне API 14.
int32_t rsAtomicSub (летучий uint32_t * адрес, значение uint32_t ); Добавлено на уровне API 20.
Параметры
адрес Адрес значения, которое необходимо изменить.
ценить Сумма для вычета.
Возврат
Значение *addr перед операцией.

Атомарно вычитает значение из значения по адресу addr, т.е. *addr -= value .

rsAtomicXor : Поточно-ориентированное поразрядное исключающее или

int32_t rsAtomicXor (изменчивый int32_t * адрес, значение int32_t ); Добавлено на уровне API 14.
int32_t rsAtomicXor (летучий uint32_t * адрес, значение uint32_t ); Добавлено на уровне API 20.
Параметры
адрес Адрес значения, которое необходимо изменить.
ценить Значение для xor.
Возврат
Значение *addr перед операцией.

Атомарно выполняет побитовое исключающее ИЛИ двух значений, сохраняя результат по адресу addr, т.е. *addr ^= value .

,

Обзор

Чтобы обновить значения, общие для нескольких потоков, используйте функции ниже. Они гарантируют атомарное обновление значений, т. е. чтение, обновление и запись в память выполняются в правильном порядке.

Эти функции медленнее, чем их неатомарные эквиваленты, поэтому используйте их только тогда, когда необходима синхронизация.

Обратите внимание, что в RenderScript ваш код, скорее всего, будет выполняться в отдельных потоках, даже если вы не создавали их явно. Среда выполнения RenderScript очень часто разделяет выполнение одного ядра на несколько потоков. Обновление глобальных переменных должно выполняться с помощью атомарных функций. Если возможно, измените свой алгоритм, чтобы вообще избежать их.

Краткое содержание

Функции
рсатомикадд Потокобезопасное дополнение
rsAtomicAnd Потокобезопасный побитовый и
rsAtomicCas Потокобезопасное сравнение и установка
rsAtomicDec Потокобезопасный декремент
rsAtomicInc Потокобезопасное приращение
rsAtomicMax Потокобезопасный максимум
rsAtomicMin Потокобезопасный минимум
rsAtomicOr Потокобезопасный побитовый или
rsAtomicSub Потокобезопасное вычитание
rsAtomicXor Потокобезопасное поразрядное исключающее или

Функции

rsAtomicAdd : Потокобезопасное дополнение.

int32_t rsAtomicAdd (изменчивый int32_t * адрес, значение int32_t ); Добавлено на уровне API 14.
int32_t rsAtomicAdd (летучий uint32_t * адрес, значение uint32_t ); Добавлено на уровне API 20.
Параметры
адрес Адрес значения, которое необходимо изменить.
ценить Сумма для добавления.
Возврат
Значение *addr перед операцией.

Атомарно добавляет значение к значению по адресу addr, т.е. *addr += value .

rsAtomicAnd : Поточно-безопасный побитовый и

int32_t rsAtomicAnd (изменчивое int32_t * адрес, значение int32_t ); Добавлено на уровне API 14.
int32_t rsAtomicAnd (летучие uint32_t * адрес, значение uint32_t ); Добавлено на уровне API 20.
Параметры
адрес Адрес значения, которое необходимо изменить.
ценить Ценность для и с.
Возврат
Значение *addr перед операцией.

Атомарно выполняет побитовую обработку двух значений, сохраняя результат обратно по адресу addr, т.е. *addr &= value .

rsAtomicCas : Потокобезопасное сравнение и установка

int32_t rsAtomicCas (летучие int32_t * addr, int32_t CompareValue, int32_t newValue); Добавлено на уровне API 14.
uint32_t rsAtomicCas (летучие uint32_t * addr, uint32_t CompareValue, uint32_t newValue); Добавлено на уровне API 14.
Параметры
адрес Адрес значения для сравнения и замены, если тест пройден.
сравнениезначение Значение для проверки *addr.
новое значение Значение для записи, если тест пройден.
Возврат
Значение *addr перед операцией.

Если значение в адресе соответствует значению CompareValue, то новоеЗначение записывается в адрес, т.е. if (*addr == compareValue) { *addr = newValue; } .

Вы можете проверить, что значение было записано, проверив, что значение, возвращаемое rsAtomicCas(), равно значению CompareValue.

rsAtomicDec : Потокобезопасное уменьшение

int32_t rsAtomicDec (летучий int32_t * адрес); Добавлено на уровне API 14.
int32_t rsAtomicDec (летучие uint32_t * адрес); Добавлено на уровне API 20.
Параметры
адрес Адрес значения, которое нужно уменьшить.
Возврат
Значение *addr перед операцией.

Атомарно вычитает единицу из значения по адресу addr. Это эквивалентно rsAtomicSub (addr, 1) .

rsAtomicInc : Потокобезопасное приращение

int32_t rsAtomicInc (летучий int32_t * адрес); Добавлено на уровне API 14.
int32_t rsAtomicInc (летучий uint32_t * адрес); Добавлено на уровне API 20.
Параметры
адрес Адрес значения для увеличения.
Возврат
Значение *addr перед операцией.

Атомарно добавляет единицу к значению по адресу addr. Это эквивалентно rsAtomicAdd (addr, 1) .

rsAtomicMax : максимум потокобезопасности.

int32_t rsAtomicMax (изменчивый int32_t * адрес, значение int32_t ); Добавлено на уровне API 14.
uint32_t rsAtomicMax (летучий uint32_t * адрес, значение uint32_t ); Добавлено на уровне API 14.
Параметры
адрес Адрес значения, которое необходимо изменить.
ценить Сравнительная стоимость.
Возврат
Значение *addr перед операцией.

Атомарно устанавливает значение в addr как максимальное из *addr и value, т.е. *addr = max(*addr, value) .

rsAtomicMin : минимум потокобезопасности.

int32_t rsAtomicMin (изменчивый int32_t * адрес, значение int32_t ); Добавлено на уровне API 14.
uint32_t rsAtomicMin (изменчивый uint32_t * адрес, значение uint32_t ); Добавлено на уровне API 14.
Параметры
адрес Адрес значения, которое необходимо изменить.
ценить Сравнительная стоимость.
Возврат
Значение *addr перед операцией.

Атомарно устанавливает значение addr равным минимуму *addr и value, т.е. *addr = min(*addr, value) .

rsAtomicOr : Поточно-ориентированный побитовый или

int32_t rsAtomicOr (изменчивое int32_t * адрес, значение int32_t ); Добавлено на уровне API 14.
int32_t rsAtomicOr (летучий uint32_t * адрес, значение uint32_t ); Добавлено на уровне API 20.
Параметры
адрес Адрес значения, которое необходимо изменить.
ценить Значение до или с.
Возврат
Значение *addr перед операцией.

Атомарно выполнять побитовое или два значения, сохраняя результат по адресу addr, т.е. *addr |= value .

rsAtomicSub : Потокобезопасное вычитание

int32_t rsAtomicSub (изменчивое int32_t * адрес, значение int32_t ); Добавлено на уровне API 14.
int32_t rsAtomicSub (летучий uint32_t * адрес, значение uint32_t ); Добавлено на уровне API 20.
Параметры
адрес Адрес значения, которое необходимо изменить.
ценить Сумма для вычета.
Возврат
Значение *addr перед операцией.

Атомарно вычитает значение из значения по адресу addr, т.е. *addr -= value .

rsAtomicXor : Поточно-ориентированное поразрядное исключающее или

int32_t rsAtomicXor (изменчивое int32_t * адрес, значение int32_t ); Добавлено на уровне API 14.
int32_t rsAtomicXor (летучий uint32_t * адрес, значение uint32_t ); Добавлено на уровне API 20.
Параметры
адрес Адрес значения, которое необходимо изменить.
ценить Значение для xor.
Возврат
Значение *addr перед операцией.

Атомарно выполняет побитовое исключающее ИЛИ двух значений, сохраняя результат по адресу addr, т.е. *addr ^= value .