よって、書き込みアクセス同士は排他制御されることがわかる。使用される状況を考えよう。ループ全体が無くても同じということになる。もこの変数を参照しないので、これも無くても同じである。するスレッドが存在しない以上無視できる。何もしていないことになる。よって、読み込みアクセス同士は排他制御されず、無制限に同時実行されることがわかる。それでは読み込みと書き込みのアクセスが衝突した場合はどうか。読み込み中に書き込みしようとした場合を考える。ループの中でウェイトセットに入り、待たされることになる。次に、書き込み中に読み込みしようとした場合を考える。ループの中でウェイトセットに入り、待たされることになる。よって、読み込みアクセスと書き込みアクセスは排他制御され、決して同時には処理されない。ロックが満たすべき条件を備えてることがわかった。与えて起動して、アクセス効率が向上していることを実感して欲しい。二つのグラフ描画が同時に実行されているのがわかるだろう。これで「読み書き問題」は解決のはず...。この章のタイトルをもう一度よく見て欲しい。「とりあえずの解」と書いてある。不満げな書き方ではないか。関する考察には重大な落とし穴がある。確かにデータが破壊されたり、不完全なデータが読み込まれることはない。以下のようなことが起りうるのだ。悪意のある攻撃者が電子掲示板の運営を妨害しようと考えた。守られており破壊することは不可能だ。掲示板サーバには十分な処理能力があり、攻撃者の手持ちの資源(低速回線に繋がった2台の端末)でその能力を使い切ることは不可能だ。この攻撃者はまんまと攻撃に成功した。彼が攻撃している間、誰も掲示板に書き込みできなくなったのだ。彼は何をしたのだろうか?種明かしをすると、彼は2台の端末に交互に掲示板をリロードさせたのだ。この場合リロードのタイミングが重要になる。片方の端末でのリロードが終わらないうちに、もう片方の端末のリロードを開始する、という操作を交互に繰り返す必要がある。起動方法は以下の通り。同様の画面が出るが、ずっとフラットなグラフが表示され、グラフデータが更新されないのがわかるだろう*。指定して確かめることができる)。このデモは正確なタイミングを完全に維持するようにはなっていない。長時間放置しておくと、アクセスタイミングがだんだんずれてきて、片方のスレッドが休憩中にもう片方のスレッドによる読み込みが終わってしまうことがある。なると書き込み側のスレッドが動作できるようになり、グラフデータが更新される。ソースコード(リスト5)をよく見て欲しい。ループの条件が問題だ。ループの中で待たされてしまい、決して前には進めない。これはロックアウトと呼ばれる現象だ。ロックアウトはデッドロックと異なり計算機が停止してしまうわけではないが、特定の処理が全く実行されなくなる。