cmpxchgとInterlockedExchangeの関係

Powered by dKingyo / 人口を増やす / 就職口を増やす | gigabeat | iPod | MP3 | Wizpy | ZenStone


 cmpxchgとInterlockedExchangeの関係を調べているうちに泥沼にはまった。一体どのように書けばスレッドが割り込まないで処理できるコードになるか良く分からない。MutexとかCriticalSectionを使わないで高速化したいプログラムがあるのだが、どうすればよいだろう。cmpxchgで32ビット変数のうちの1ビットを立てたり下げたりしたいのだが、これをどうすれば旨く出来るかがわからないのである。
 例えば

x &= ~n;

というような変数xのフラグを下げる演算中に別のスレッドが割り込んできて変数xの内容を書き換えてしまわないかと心配しているのである。

 これが行えるようになればC言語でのメモリ管理とタスク処理の最高の原型が出来ると思っていじっていたのだがどうも手詰まりになってしまった。残念。
 スレッドの割り込みに関してはもっと奥の深い資料が必要なようだ。