2001/09/20 undo
トイレに入っているとき、ドアを開けられたことはありませんか? 踏んばっている最中だったりすると、とても恥ずかしいですよね(^^;;)
ところで、こういう場合ドアの鍵を忘れてしまったあなたがいけないのでしょうか? ノックもしないでドアを開けた人がいけないのでしょうか? どっちがいけないにしても、あなたが恥ずかしいことに変わりはありませんね。それに予め厳密なルールがあるわけでもないので、ふつうはどちらが悪いとも言えませんよね。
それでは、いざトイレに入った後にトイレットペーパーがなくなっているのに気がついて、慌ててトイレットペーパーを取りに行っている間に誰かに入られてしまったことはありませんか? あるでしょ!? えっ!もらしちゃったの? いやぁ、困っちゃいますね(^^;
コンピュータの世界でも同じことが起きます。そうですねぇ、あなたのプログラムがトイレでデータを作ろうとしているときに、ほかのプログラムがデータを消していたら、終了したときには作ろうとしたデータはなくなっているかもしれません。いや、それどころかあなたのプログラムが操作しようとしたときには、もうデータはなくなっているかもしれません。そう、さっきまであったはずのトイレットペーパーがなくなってしまって困ってしまいます(^^;;
あなたがゆっくりとトイレに入るためには、トイレに入るためのルールが必要です。たとえば、「トイレに入る前には必ず電灯をつけ、トイレを出るときには必ず電灯を消す」「電灯をつけた人がつけているときだけがトイレに入ることができる」というルールに決めたとします。このルールならば、トイレに入ってからトイレットペーパーがないことに気がついたら、電灯をつけたままトイレを出てトイレットペーパーを取りに行っても誰も入ることはできません。
このときの電灯を「セマフォ」といいます。
しかし、このルールはあなたも含めて、みんなが守ってくれなければ意味がありません。もし誰かが電灯を消すのを忘れたら、トイレの前には長い行列ができてしまいます。
セマフォには、トイレだけじゃなくてほかにも使い方がありますが、今日はここまで。