我找到了InterlockedExchange函数,该函数使我可以交换两个带符号的32位变量(LONG)。
但是,在Windows下原子交换两个无符号32位变量(ULONG)的正确方法是什么?
我看不到使用Microsoft提供的功能来执行此操作的明显方法。
(考虑到Microsoft还告诉我,在某些情况下,将无符号整数转换为有符号整数的结果是实现定义的。)
只需使用类型转换:
ULONG value1, value2;
InterlockedExchange((LPLONG)&value2, (LONG)value1);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句