Функции атомарного обновления 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 .