前回の入門:msyksphinz.hatenablog.com
並列プログラミングに改めて入門するために並行プログラミング入門を読んでみることにした(積読しまくっている)。
引き続き読んでいる。哲学者の食事問題について、単純に箸を左からとって次に右を取るようなアルゴリズムを実装すると、デッドロックしてしまうという問題。 これはステートマシンで解析すると、次に移動できないステートに到達してしまうことを意味する。
さらにライブロックは、箸を取っては解放するというのを繰り返す状態を意味する。 これはステートマシンで解析すると、同じステートを行ったり来たりする状態になることを意味する。
これを解決するために銀行家のアルゴリズムというのがある。このアルゴリズムは基本的にあるリソースが割り当てられたとして、それによってデッドロックが発生するかどうかをシミュレーションすることによってその状態が安全かどうかを判定する。