ロックフリーアルゴリズムとは,正確には進行性が保証されるアルゴリズムのことをいう.Compare and Swap命令(CAS)を主軸として実装する.
ロックフリーアルゴリズムにおいて,有名な問題としてABA問題がある.ABA問題の解決方法はいくつかあり,それぞれに特徴がある.今回は,タグ付きポインタとload-link/store-conditional(ll/sc)バージョンでのCASといった2つの解決方法について検証する.
最初に,ロックフリーアルゴリズムのなかで最も基本的なロックフリースタックをC言語で実装する.そして,それをPromelaでSPINのモデルとして記述する.