Функция 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, равно значению Comperand.
[in] Comperand
Указывает значение, которое сравнивается с входным значением, на которое указывает целевой.
Возвращаемое значение
InterlockedCompareExchange возвращает исходное значение *Назначения.
Замечания
Если Comperand равно *назначения, то дляназначения задано значение Exchange. В противном случае *назначения не изменяется.
InterlockedCompareExchange предоставляет быстрый атомарный способ синхронизации тестирования и обновления переменной, к которой используется несколько потоков. Если входное значение, указываемое Назначение равно значению Comperand, выходное значение Назначения задается значением Exchange.
InterlockedCompareExchange предназначен для скорости и, как правило, реализуется встроенным компилятором. InterlockedCompareExchange является атомарным только в отношении других вызовов interlockedXxx. Он не использует блокировку спина и может безопасно использоваться для страничных данных.
Операции с блокировкой нельзя использовать в не кэшированном памяти.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Доступно начиная с Windows 2000. |
целевая платформа | Всеобщий |
заголовка | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h, Miniport.h) |
библиотеки | OneCoreUAP.lib в Windows 10 |
IRQL | Любой уровень |
См. также
ExInterlockedCompareExchange64