排他制御

ダメなアルゴリズム

1.ID置き場をreadして他人が使用中か調べる
2.他人のIDが書いてなかったら自分のIDをwriteして権限取得

失敗例
1.AがID置き場をreadする→しめしめ、誰も書いてないぞ
2.BがID置き場をreadする→しめしめ、誰も書いてないぞ
3.Aが自分のIDをwriteする→やった、これで俺のターン!
4.Bが自分のIDをwriteする→やった、これで俺のターン!

改良版アルゴリズム

1.ID置き場をreadして他人が使用中か調べる
2.他人のIDが書いてなかったら自分のIDをwriteする
3.念のため1.と2.をするのに必要な時間だけ待つ
4.ID置き場をreadしてみてそれでも自分のIDだったら権限取得

成功例
1.AがID置き場をreadする→しめしめ、誰も書いてないぞ
2.BがID置き場をreadする→しめしめ、誰も書いてないぞ
3.Aが自分のIDをwriteする→やった!でもまだ安心出来ないぞ
4.Aが念のため待つ
5.Bが自分のIDをwriteする→やった!でもまだ安心出来ないぞ
6.Bが念のため待つ
7.AがID置き場をreadする→あー、自分のIDじゃなかった。残念。
8.BがID置き場をreadする→やった、これで俺のターン!