wait-free

以下のサイトを紹介してもらった。
http://www-06.ibm.com/jp/developerworks/java/041203/j_j-jtp11234.html
それによるとマルチスレッドプログラミングにてロックを用いずに同期をとる方法をあるらしい。
そういう手法はlock-freeやwait-freeと呼ばれる。
wikipediaを見る限り以下のような定義らしい。

lock-free
常に処理が進む*1
wait-free
処理が必ず有限のステップで終了する。

lock-freeを実現する方法としてCAS(compare-and-swap)命令を使う方法がある。
CASとは比較と代入*2をアトミックに行うCPU命令である。これを用いるとロックを使わずにスレッド間でデータの整合性が保つことができる。

組み込みなどのreal-timeの分野で利用されるものらしい。

*1:他のスレッドの挙動によっては無限ループになりえる

*2:swapなので値の交換の方が正しいか