【リーダーライターロック】
リーダーライターロック とは?
公開:
💡 読む人は一緒に、書き換える人は一人で
共有データの読み取りは複数の処理に許し、書き込みはほかの読み書きを排除して行うロック。読み取りが多い処理で役立つが、公平性や管理コストに注意が必要。
📌 このページのポイント
- 読み取りロックは複数が共有でき、書き込みロックは排他的に取得する
- 読み取り区間では共有データを書き換えず、全アクセスで規則を守る
- 読者・書き手の優先方式により、待ち時間や飢餓状態の起きやすさが変わる
普通のロックと何が違うの?
読むだけの人同士は同時に入れるところだよ。共有設定を読む処理が二つあっても、誰も書き換えないなら一緒に読める。変更するときは書き込みロックを取り、ほかの読者や書き手が入れない状態にするんだ。
読み取り中に、少しだけ更新したくなったら?
読み取りロックのまま共有データを変更してはいけないよ。アクセス記録やキャッシュへの追加も書き込みになることがあるんだ。名前が「取得する処理」でも、内部で変更していないかを確認する必要があるね。
読み取りの鍵を、書き込みの鍵へ交換できる?
読む処理が多ければ、これが一番?
管理の手間もあるので、短い処理では普通のロックのほうが速い場合もあるよ。読者を優先し続ける方式だと書き手が待たされることもある。公平性の設定、読み書きの割合、保護する処理の長さを見て選びたいね。
まとめ:ざっくりこれだけ覚えればOK!
「リーダーライターロック」って出てきたら「読み取りの同時実行と、書き込みの排他を分ける鍵」と思えればだいたいOK!