我找到了InterlockedExchange函数,它允许我交换两个签名的 32位变量(LONG)。
但是,在Windows下以原子方式交换两个无符号 32位变量(ULONG)的正确方法是什么?
我没有看到使用Microsoft提供的功能的明显方法。
(考虑到Microsoft还告诉我在某些情况下将无符号整数转换为有符号整数的结果为implementation-defined。)
答案 0 :(得分:2)
只需使用类型转换:
ULONG value1, value2;
InterlockedExchange((LPLONG)&value2, (LONG)value1);
答案 1 :(得分:0)
在您的链接中,将未签名的内容投射到不同尺寸的类型上 (和/或浮点数)解释 仅在同一类型的签名和未签名之间进行转换 应该没有任何问题。