マルチスレッドプログラミング相談室 その7
レス数が900を超えています。1000を超えると表示できなくなるよ。
0930デフォルトの名無しさん
2009/09/17(木) 09:50:3332bitOSだろうが64bitOSだろうが、4byte以下の変数はアトミック変数で、それより大きな変数はアトミックでない
C言語の場合、更新処理を行う場合、Interlocked系の関数を使用する
WinBase.hをのぞいてみると、
32bit環境でのInterlockedIncrement64等は、InterlockedCompareExchange64によるスピン実装されている
32bit用のInterlockedAnd等は実装されていない?
ターゲットIA64以外では、次のように定義されている
#define InterlockedIncrementAcquire InterlockedIncrement
#define InterlockedIncrementRelease InterlockedIncrement
つまり、InterlockedIncrementはAcquireの機能もReleaseの機能も持つ?
何言ってんだかわからなくなってきた
32bitで論理演算をアトミックにやる方法はないのか?
Interlocked系以外でメモリバリアっぽいことする方法がわからん
さらにWinBaseを調べてたらInterlockedPopEntrySListなるものを発見
これがお前らがずっと言ってたLock-Free Queueってやつか!?
もうちょっと調べてみるか
レス数が900を超えています。1000を超えると表示できなくなるよ。