原子交换两个无符号32位变量(ULONG)的正确方法是什么?

时间:2014-03-26 18:49:19

标签: winapi visual-studio-2012 atomic-swap

我找到了InterlockedExchange函数,它允许我交换两个签名的 32位变量(LONG)。

但是,在Windows下以原子方式交换两个无符号 32位变量(ULONG)的正确方法是什么?

我没有看到使用Microsoft提供的功能的明显方法。

(考虑到Microsoft还告诉我在某些情况下将无符号整数转换为有符号整数的结果为implementation-defined。)

2 个答案:

答案 0 :(得分:2)

只需使用类型转换:

ULONG value1, value2;
InterlockedExchange((LPLONG)&value2, (LONG)value1);

答案 1 :(得分:0)

在您的链接中,将未签名的内容投射到不同尺寸的类型上 (和/或浮点数)解释 仅在同一类型的签名和未签名之间进行转换 应该没有任何问题。

相关问题