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