Функция InterlockedCompareExchange (miniport.h)
Подпрограмма InterlockedCompareExchange выполняет атомарную операцию, которая сравнивает входное значение, указанное назначением , со значением Comparand.
Синтаксис
LONG InterlockedCompareExchange(
[in, out] LONG volatile *Destination,
LONG ExChange,
LONG Comperand
);
Параметры
[in, out] Destination
Указатель на входное значение, сравниваемое со значением Comparand.
ExChange
Указывает выходное значение, на которое указывает Destination , если входное значение , на которое указывает Destination, равно значению Comparand.
Comperand
Задает значение, сравниваемое с входным значением, на которое указывает destination.
Возвращаемое значение
InterlockedCompareExchange возвращает исходное значение *Destination.
Комментарии
Если параметр Comparand равен *Destination, то параметру *Destination присваивается значение Exchange. В противном случае значение *Назначение не изменяется.
InterlockedCompareExchange предоставляет быстрый и атомарный способ синхронизации тестирования и обновления переменной, совместно используемой несколькими потоками. Если входное значение, указанное назначением , равно значению Comparand, выходному значению Destination присваивается значение Exchange.
InterlockedCompareExchange предназначен для скорости и, как правило, реализуется встроенным компилятором. InterlockedCompareExchange является атомарным только по отношению к другим вызовам InterlockedXxx . Он не использует спин-блокировку и может безопасно использоваться для страничных данных.
Операции с блокировкой нельзя использовать в некэшированной памяти.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Доступно начиная с Windows 2000. |
Целевая платформа | Универсальное |
Верхняя часть | miniport.h (включая Wdm.h, Ntddk.h, Ntifs.h, Miniport.h) |
Библиотека | OneCoreUAP.lib в Windows 10 |
IRQL | Любой уровень |
См. также раздел
ExInterlockedCompareExchange64