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