同步中的新增功能

Windows 包含以下用于同步的新编程元素。

Windows 8

新函数

DeleteSynchronizationBarrier

删除同步屏障。

EnterSynchronizationBarrier

导致调用线程在同步屏障处等待,直到最大线程数进入该屏障。

GetOverlappedResultEx

检索指定超时间隔内对指定文件、命名管道或通信设备执行重叠操作的结果。 调用线程可以执行可发出警报的等待。

InitializeSynchronizationBarrier

指定新同步屏障的最大线程数和旋转计数。

WaitOnAddress

等待指定地址处的值更改。

WakeByAddressAll

唤醒正在等待地址值更改的所有线程。

WakeByAddressSingle

唤醒一个正在等待地址值更改的线程。

新的互锁函数

InterlockedAddNoFence

对指定的 LONG 值执行原子加法运算。 此操作以原子方式执行,但不使用内存屏障。

InterlockedAddNoFence64

对指定的 LONGLONG 值执行原子加法运算。 此操作以原子方式执行,但不使用内存屏障。

InterlockedAndNoFence

对指定的 LONG 值执行原子 AND 操作。 此操作以原子方式执行,但不使用内存屏障。

InterlockedAnd8NoFence

对指定的 字符 值执行原子 AND 操作。 此操作以原子方式执行,但不使用内存屏障。

InterlockedAnd16NoFence

对指定的 SHORT 值执行原子 AND 操作。 此操作以原子方式执行,但不使用内存屏障。

InterlockedAnd64NoFence

对指定的 LONGLONG 值执行原子 AND 操作。 此操作以原子方式执行,但不使用内存屏障。

InterlockedBitTestAndComplement64

测试指定 LONG64 值的指定位并对其进行补充。 此操作为原子性操作。

InterlockedBitTestAndResetAcquire

测试指定 LONG 值的指定位并将其设置为 0。 该操作是原子的,它通过获取内存排序语义来执行。

InterlockedBitTestAndResetRelease

测试指定 LONG 值的指定位并将其设置为 0。 该操作是原子操作,使用内存释放语义执行。

InterlockedBitTestAndSetAcquire

测试指定 LONG 值的指定位并将其设置为 1。 该操作是原子的,它通过获取内存排序语义来执行。

InterlockedBitTestAndSetRelease

测试指定 LONG 值的指定位并将其设置为 1。 该操作是原子操作,它使用释放内存排序语义执行。

InterlockedCompareExchangeNoFence

对指定值执行原子比较和交换操作。 函数比较两个指定的 32 位值,并根据比较结果与另一个 32 位值交换。 此操作以原子方式执行,但不使用内存屏障。

InterlockedCompareExchange16

对指定值执行原子比较和交换操作。 函数比较两个指定的 16 位值,并根据比较结果与另一个 16 位值交换。

InterlockedCompareExchange16Acquire

对指定值执行原子比较和交换操作。 函数比较两个指定的 16 位值,并根据比较结果与另一个 16 位值交换。 该操作是使用获取内存排序语义执行的。

InterlockedCompareExchange16Release

对指定值执行原子比较和交换操作。 函数比较两个指定的 16 位值,并根据比较结果与另一个 16 位值交换。 交换是使用释放内存排序语义执行的。

InterlockedCompareExchange16NoFence

对指定值执行原子比较和交换操作。 函数比较两个指定的 16 位值,并根据比较结果与另一个 16 位值交换。 此操作以原子方式执行,但不使用内存屏障。

InterlockedCompareExchangeNoFence64

对指定值执行原子比较和交换操作。 函数比较两个指定的 64 位值,并根据比较结果与另一个 64 位值交换。 此操作以原子方式执行,但不使用内存屏障。

InterlockedCompareExchange128

对指定值执行原子比较和交换操作。 函数比较两个指定的 128 位值,并根据比较结果与另一个 128 位值交换。

InterlockedCompareExchangePointerNoFence

对指定值执行原子比较和交换操作。 函数比较两个指定的指针值,并根据比较结果与另一个指针值交换。 此操作以原子方式执行,但不使用内存屏障。

InterlockedDecrementNoFence

递减 () 指定 32 位变量的值作为原子操作减少一个。 此操作以原子方式执行,但不使用内存屏障。

InterlockedDecrement16

递减 (将) 指定 16 位变量的值作为原子运算递减 1。

InterlockedDecrement16Acquire

递减 (将) 指定 16 位变量的值作为原子运算递减 1。 该操作是使用获取内存排序语义执行的。

InterlockedDecrement16Release

递减 (将) 指定 16 位变量的值作为原子运算递减 1。 该操作使用释放内存排序语义执行。

InterlockedDecrement16NoFence

递减 (将) 指定 16 位变量的值作为原子运算递减 1。 此操作以原子方式执行,但不使用内存屏障。

InterlockedDecrementNoFence64

递减 () 指定 64 位变量的值作为原子运算减少 1。 此操作以原子方式执行,但不使用内存屏障。

InterlockedExchangeNoFence

将 64 位变量设置为指定值作为原子操作。 此操作以原子方式执行,但不使用内存屏障。

InterlockedExchange8

将 8 位变量设置为指定值作为原子操作。

InterlockedExchange16Acquire

将 16 位变量设置为指定值作为原子操作。 操作是使用获取内存排序语义执行的。

InterlockedExchange16NoFence

将 16 位变量设置为指定值作为原子操作。 此操作以原子方式执行,但不使用内存屏障。

InterlockedExchangeNoFence64

将 64 位变量设置为指定值作为原子操作。 此操作以原子方式执行,但不使用内存屏障。

InterlockedExchangePointerNoFence

以原子方式交换一对地址。 此操作以原子方式执行,但不使用内存屏障。

InterlockedExchangeAddNoFence

执行两个 32 位值的原子加法。 此操作以原子方式执行,但不使用内存屏障。

InterlockedExchangeAddNoFence64

执行两个 64 位值的原子加法。 此操作以原子方式执行,但不使用内存屏障。

InterlockedIncrementNoFence

() 指定 32 位变量的值作为原子运算增加一个增量。 此操作以原子方式执行,但不使用内存屏障。

InterlockedIncrement16

() 指定 16 位变量的值作为原子运算递增 1。

InterlockedIncrement16Acquire

() 指定 16 位变量的值作为原子运算递增 1。 操作是使用获取内存排序语义执行的。

InterlockedIncrement16Release

() 指定 16 位变量的值作为原子运算递增 1。 该操作使用发布内存排序语义执行。

InterlockedIncrement16NoFence

() 指定 16 位变量的值作为原子运算递增 1。 此操作以原子方式执行,但不使用内存屏障。

InterlockedIncrementNoFence64

() 指定 64 位变量的值作为原子运算递增 1。 此操作以原子方式执行,但不使用内存屏障。

InterlockedOrNoFence

对指定的 LONG 值执行原子 OR 操作。 此操作以原子方式执行,但不使用内存屏障。

InterlockedOr8NoFence

对指定的 字符 值执行原子 OR 操作。 此操作以原子方式执行,但不使用内存屏障。

InterlockedOr16NoFence

对指定的 SHORT 值执行原子 OR 操作。 此操作以原子方式执行,但不使用内存屏障。

InterlockedOr64NoFence

对指定的 LONGLONG 值执行原子 OR 操作。 此操作以原子方式执行,但不使用内存屏障。

InterlockedPushListSListEx

在另一个单独链接列表的前面插入一个单独链接列表。 对列表的访问在多处理器系统上同步。 此方法的此版本不使用 __fastcall 调用约定。

InterlockedXorNoFence

对指定的 LONG 值执行原子 XOR 操作。 此操作以原子方式执行,但不使用内存屏障。

InterlockedXor8NoFence

对指定的 字符 值执行原子 XOR 操作。 此操作以原子方式执行,但不使用内存屏障。

InterlockedXor16NoFence

对指定的 SHORT 值执行原子 XOR 操作。 此操作以原子方式执行,但不使用内存屏障。

InterlockedXor64NoFence

对指定的 LONGLONG 值执行原子 XOR 操作。 此操作以原子方式执行,但不使用内存屏障。

Windows 7

新函数

SetWaitableTimerEx

激活指定的可等待计时器,并提供计时器的上下文信息。

TryAcquireSRWLockExclusive

尝试在独占模式下 (SRW) 锁定获取超薄的读取器/编写器。 如果调用成功,调用线程将获取锁定的所有权。

TryAcquireSRWLockShared

尝试在共享模式下获取超薄读取器/写入器 (SRW) 锁。 如果调用成功,调用线程将获取锁定的所有权。

新结构

REASON_CONTEXT

包含使用 SetWaitableTimerEx 激活的计时器的上下文信息。