並列処理とかみてて、定義がなんかややこしくなってきそうだったからメモ
http://doc.akka.io/docs/akka/2.3.11/general/terminology.html
英語の勉強も兼ねている。上のやつを日本語にしただけ。
Wait-Freedom
全ての処理が有限の処理時間で終了することが保証されているという特性。
絶対に処理をブロックされない綺麗で美しい最強のやつ。デッドロックが絶対に起こらない。
飢餓状態(starvation: 訳が正しいかわからん)にもならない。
Lock-Freedom
1つ1つは有限の実行時間で処理が終わる処理だけど、無数に呼ばれるような特性。
デッドロックにはならないけど、飢餓状態にならないことを保証するわけではない。
やったらすぐ終わるんだけど、優先度が高いタスクがすごい勢いで入ってきて、一向に終わらないというか始まらない。
みたいな感じだと理解。
Obstruction-Freedom
ある点を突破したら、後は有限時間の処理で終わるという特性。
casさえ成功すれば終わるんだけど、何回リトライしても成功しない。
みたいな感じだと理解。
Lock-FreedomとObstruction-Freedomの違い
Lock-FreedomとObstruction-Freedomの違いがよくわからないような気がするけど、Lock-Freedomが処理が始まってすらいないことで終わらないのに対して、Obstruction-Freedomは処理の途中で待っている感じがした。
Lock-Freedom
みんなの頑張り以上にタスクが積み上がってbacklogが溜まっていく
つまり、みんな働いている
Obstruction-Freedom
どうしても資料を印刷しないと進められないんだけど、何回コピー機を見に行っても誰かが使ってる
つまり、暇をもてあましている
みたいな感じだと理解。