gccでのcompare and swap

gcc上でcompare and swapをしたいときのメモ

CentOS5.4上でyumによりインストールされるgccは標準で4.1。
この環境下でcompare and swapを実行する方法は不明。

# yum install gcc44

としてgccのバージョン4.4を使用すれば
__sync_bool_compare_and_swap()
が使用できるようになる。使用する際は何もインクルードする必要がない。

__sync_bool_compare_and_swap(&a,10,100); //a==10のとき aに100を代入

といった感じに使える。
並行なデータ構造を作りたい時にどうぞ。

wikipedia上のcompare and swapの説明
http://ja.wikipedia.org/wiki/%E3%82%B3%E3%83%B3%E3%83%9A%E3%82%A2%E3%83%BB%E3%82%A2%E3%83%B3%E3%83%89%E3%83%BB%E3%82%B9%E3%83%AF%E3%83%83%E3%83%97