2

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

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

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

(考虑到微软还告诉我,将无符号整数转换为有符号整数的结果在某些情况下是由实现定义的。)

4

2 回答 2

2

只需使用类型转换:

ULONG value1, value2;
InterlockedExchange((LPLONG)&value2, (LONG)value1);
于 2014-03-26T19:07:18.583 回答
0

在您的链接中,解释了将 unigned 的东西转换为不同大小的类型
(和/或浮点数的东西)。
仅在相同类型的有符号和无符号之间进行转换
应该是可能的,没有任何问题。

于 2014-03-26T19:05:02.393 回答