2

2 つの符号付き32 ビット変数 (LONG)を交換できるInterlockedExchange関数を見つけました。

しかし、Windows で 2 つの符号なし32 ビット変数 (ULONG)を原子的に交換する正しい方法は何ですか?

Microsoft が提供する関数を使用してそれを行う明確な方法がわかりません。

(マイクロソフトは、符号なし整数を符号付き整数に変換した結果は、場合によっては実装定義であると私に言っていることも考慮してください。)

4

2 に答える 2

2

型キャストを使用するだけです。

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

あなたのリンクでは、 unigned をさまざまなサイズの型
(および/または浮動小数点のもの) にキャストすることが説明されています。
同じ型の signed と unigned の間でのみキャスト
することは問題なく可能です。

于 2014-03-26T19:05:02.393 に答える