ロックとラッチ
https://gyazo.com/3417995d217e8ecae8d6e3a1ee004286
この図表どこから持ってきたんだっけ...nikezono.icon
並行処理においては「ロック」と「ラッチ」という言葉が区別される. ロックは論理的にアルゴリズム上必要なもので,ラッチは実装上必要なもの,という理解でよいと思う.
たとえば「トイレの個室に一人しか入れないようにする」ためには「ロック」が要る.
実装上,ドアに鍵をつける.とこれは「ラッチ」になる.
鍵じゃなくても,一人しか入れないようにできればなんでもよい.警備員を雇ってもラッチ.
Concurrency Controlにおいては,ロックという言葉の定義が特殊である.
通常用いられるような排他制御という意味合いとは異なる.
プロトコル上は必要とされないが,実装上data raceなどを防ぐために排他制御が必要となることがある. これをラッチと呼ぶ.
プロトコル上はタイムスタンプのみを用いて書込みを行えば良い為,ロックは必要ない.
が,データ競合を防ぐにはラッチが必要となる.
Lock-freeに対してLatch-freeという表現もある.