InterlockedCompareExchange 函数 (miniport.h)
InterlockedCompareExchange 例程执行原子作,该作将 Destination 指向的输入值与 Compareand的值进行比较。
语法
LONG InterlockedCompareExchange(
[in, out] LONG volatile *Destination,
LONG ExChange,
LONG Comperand
);
参数
[in, out] Destination
指向与 Comparand值进行比较的输入值的指针。
ExChange
指定 目标 指向的输出值,如果 Destination 指向的输入值 等于 Comparand的值。
Comperand
指定与 目标指向的输入值进行比较的值。
返回值
InterlockedCompareExchange 返回 *Destination的原始值。
言论
如果 Comparand 等于 *Destination,则 *Destination 设置为等于 exchange 。 否则,*目标 保持不变。
InterlockedCompareExchange 提供了一种快速的原子方式,用于同步由多个线程共享的变量的测试和更新。 如果 Destination 指向的输入值 等于 Comparand的值,则 Destination 的输出值设置为 Exchange的值。
InterlockedCompareExchange 专为速度而设计,通常由编译器内联实现。 InterlockedCompareExchange 仅在其他 InterlockedXxx 调用方面是原子的。 它不使用旋转锁,可以安全地用于可分页数据。
不能对非缓存内存使用互锁作。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | 从 Windows 2000 开始可用。 |
目标平台 | 普遍 |
标头 | miniport.h (包括 Wdm.h、Ntddk.h、Ntifs.h、Miniport.h) |
库 | Windows 10 上的 OneCoreUAP.lib |
IRQL | 任何级别 |
另请参阅
ExInterlockedCompareExchange64