【はいたせいぎょ】
排他制御(並行処理) とは?
最終更新:
💡 トイレの「使用中」ランプ――入ったらロック、出たら解除!
排他制御は、同時に操作されると不整合が起きる共有データや処理について、一度に一つの実行主体だけが扱えるようにする考え方。ミューテックスなどを使い、必要な処理のまとまりを保護する。
📌 このページのポイント
排他制御って何? なんだか怖そうな名前だけど…
トイレの鍵をイメージしてみよう。誰かが使う間はほかの人が入れず、出るときに鍵を戻すよね。同じように、共有データについて、必要な処理を同時に行わせない考え方だよ。
同時に触ると、どんな問題があるの?
たとえば値0をAとBがそれぞれ読んで、1を足して書き戻すとしよう。両方が先に0を読むと、それぞれ1を書き、2回足したはずなのに結果は1になる。読み取りから更新までを一つのまとまりとして守る必要があるんだ。
ミューテックスを使えばよい?
方法の一つだよ。ロックを取得して保護対象を扱い、終わったら解放する。同じ対象を扱う側どうしで、同じロックを使う必要がある。ロックを取らずに書き換える処理があれば、その操作まで自動で守られるわけではないんだ。
ロックがあれば、どんな不具合も防げる?
まとめ:ざっくりこれだけ覚えればOK!
「排他制御」って出てきたら「共有データを同時に触らせず、必要な処理を一つずつ行う仕組み」と思えばだいたいOK!
📖 おまけ:英語の意味
「Mutual Exclusion」 = 相互排除
💬 Mutualは相互、exclusionは排除。同じ保護対象の操作が同時に進まないようにする考え方で、ミューテックスはそのための道具の一つだよ。