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の分野で利用されるものらしい。