Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Атомарно сравнивает назначение со значением сравнения. Если они идентичны, назначение перезаписывается входным значением. Исходному значению присваивается исходное значение назначения.
Синтаксис
void InterlockedCompareExchange(
in R dest,
in T compare_value,
in T value,
out T original_value
);
Параметры
-
dest [in]
-
Тип: R
Адрес назначения.
-
compare_value [in]
-
Тип: T
Значение сравнения.
-
value [in]
-
Тип: T
Входное значение.
-
original_value [out]
-
Тип: T
Исходное значение.
Возвращаемое значение
Эта функция не возвращает значение.
Комментарии
Атомарно сравнивает значение, на которое ссылается dest , с compare_value, сохраняет значение в расположении, на которое ссылается dest , если значения совпадают, возвращает исходное значение dest в original_value. Эта операция может выполняться только с типизированными ресурсами int или uint и переменными общей памяти. Существует два возможных варианта использования этой функции. Во-первых, R является типом переменной общей памяти. В этом случае функция выполняет операцию с регистром общей памяти, на который ссылается dest. Второй сценарий — это ситуация, когда R является типом переменной ресурса. В этом сценарии функция выполняет операцию с расположением ресурса, на который ссылается dest. Эта операция доступна только в том случае, если R доступен для чтения и записи.
Операции с блокировкой не подразумевают границы памяти или барьеры.
Примечание
Если вы вызываете InterlockedCompareExchange в цикле шейдера вычислений for или while , для правильной компиляции необходимо использовать атрибут [allow_uav_condition] в этом цикле.
Минимальная модель шейдера
Эта функция поддерживается в следующих моделях шейдеров.
Модель шейдера | Поддерживается |
---|---|
Модели шейдеров 5 и более поздних версий шейдеров | да |
Эта функция поддерживается в следующих типах шейдеров:
Вершина | Корпуса | Домен | Geometry | Пиксель | Вычисления |
---|---|---|---|---|---|
x | x | x | x | x | x |
См. также раздел