iwiwi 備忘録

学んだことを殴り書きます。自分向けのメモです。

compare and swap (CAS) 命令

atomic (C++11)

C++11 には atomic に atomic_compare_exchange_weak, atomic_compare_exchange_strong がある.

でも,計算クラスタ等の gcc が古いので残念ながら使えない.

atomic (Boost)

C++11 の atomic の実装が Boost にあるっぽい.

新しい gcc野良ビルドするよりは Boost を入れるほうが遥かに楽なので,アリかとも思うが,できればそういうものを入れないで済むと楽だし,配布する予定のものであれば利用者にも嫌われない

__sync_bool_compare_and_swap (gcc 拡張)

gcc には __sync_bool_compare_and_swap という組み込み関数がある.コレを使えば良い.

gcc 4.2 からであるという情報を見かける.計算クラスタgcc は 4.1.2 であり絶望しかけたが,試してみたら使えた.