seegongsik
オペレーティングシステム

わかりやすく レースコンディション とは

二人が同じ瞬間に同じものを直すと、結果が狂うことがあります。答えは、一人ずつ順番に直すことです。

01

二人が同じマスを直すと

壁に、数字が書かれたメモが一枚貼ってあります。いまは10です。二人がそれぞれ、ここに1を足そうとしています。
一人が10を見て、頭の中で11を作り、メモに11と書きます。もう一人も同じようにします。ところが二人がほとんど同じ瞬間に始めると、どちらも最初の10を見て、どちらも11と書いてしまいます。
1を二回足したのだから12になるはずなのに、結果は11です。一回分が消えてしまいました。同じものを同じ瞬間に直したせいで起きた事故です。
再生回数や口座の残高のように、何人もが一緒に直す数字でこの事故が起きると、一回分の変化が音もなく消えてしまいます。

10AB読む 10読む 10111111書く 11書く 1112のはずが11一回分が消えた

二人が同時に同じ値を直すと、足した分の一つが消えます。

同じものを同じ瞬間に直すと、結果が狂うことがあります。

02

同じ動作、違う結果

まったく同じ二人が同じように1ずつ足しますが、今度はタイミングだけを変えてみましょう。
順番にやると、一人が10を見て11と書いて終えたあと、もう一人がその11を見て12と書きます。結果は12で、正解です。
重ねてやると、一人が10を読んでまだ書く前に、もう一人も10を読んでしまいます。二人とも11と書いて、結果は11で、間違いです。
動作は文字どおりまったく同じでした。いつ割りこんだかというタイミング一つが、正解と間違いを分けたのです。
だからこういう問題は、十回に九回は何ともないのに、たまに一回だけ間違うので、見つけるのがとりわけ厄介です。

順番にA 読む10B 読む11書く11書く1212正解重ねてA 読む10B 読む1011間違い

同じ足し算でも、順番にやれば正解、重なれば間違いになります。

結果を分けたのは動作ではなく、いつ割りこんだかというタイミングです。

03

自分で重ねてみる

二人の働き手が、同じ値にそれぞれ1を足します。二人がどれくらい重なって始めるかを、自分で調整してみましょう。
十分に離せば、一人が全部終えてからもう一人が始めるので、結果は正解です。近づけると、一人が書く前にもう一人が読んでしまい、一回分が消えます。
スライダーを動かして、どこから結果が狂い始めるかを探してみましょう。同じ二つの動作なのに、重なった瞬間に結果が崩れます。
ほんの少し重なっただけでも一回分が消えることがあるので、タイミングが重ならないように祈るのは、本当の解決策ではありません。

読む直す書くA読む直す書くB
12結果 正解
重なり20%
離すと12で正解、重ねると11に狂います。どこから赤くなるか自分で探してみてください。

重なり具合を変えると、どこから結果が狂い始めるかがわかります。

二人を離せば結果は正しく、重なるほど狂う危険が大きくなります。

04

一人ずつ順番にすれば

では、どうやって防げばよいでしょうか。答えは単純です。同じものを直しているあいだは、一人だけが触れるようにするのです。
一人が読んで、直して、書いているあいだ、もう一人は待ちます。そのひとまとまりが終わってから、次の人が始めます。一人用のトイレに並ぶように、中に人がいればドアに鍵がかかり、出てきてから次の人が入ります。
こうすれば重なることがないので、結果はいつも正しくなります。そのかわり待ち時間が生まれます。安全のために、少しのあいだ並ぶことを受け入れるのです。
大事なのは、読む・直す・書くの三つの動作をひとまとめにして守ることです。書く瞬間だけをふさいで読むのを開けておくと、すきまがまたできてしまいます。

12A使用中B待機一人ずつ、重なりなしその代わり待ち

同じものを直しているあいだは一人だけ、ほかは並んで待ちます。

同じものを一人ずつ順番に直すようにすれば、重なりがなくなって結果が安全になります。

05

一枚にまとめる

覚えておくことは三つだけです。
一つ目、同じものを同じ瞬間に直すと事故が起きます。二人が同時に足すと一回分が消えるように、結果が狂うことがあります。
二つ目、問題は動作ではなくタイミングです。同じ仕事でも、順番にやれば正解、重なれば間違いになります。三つ目、一人ずつ順番にすれば安全です。同じものを直すあいだは一人だけが触れ、ほかは並んで待てば、結果はいつも正しくなります。
何かを何人もで一緒に使いながら、ことが同時に起きるとき、順番はひとりでには守られません。順番は私たちが決めてあげなければならないのです。

一つ目
同じものを同じ瞬間に直すと事故。二人が同時に足すと一回分が消える。
二つ目
問題は動作ではなくタイミング。順番なら正解、重なると間違い。
三つ目
一人ずつなら安全。一人だけが触り、ほかは並べば、結果はいつも正しい。

同時+共有は事故、問題はタイミング、一人ずつなら安全。

一言でいうと同じものを同時に直すと結果が狂うことがありますが、一人ずつ順番にするようにすれば防げます。
← オペレーティングシステム
このページがお役に立ったなら支援する