並列処理で一番性能に影響し、解決するのが難しいのが排他の問題です。あるデータを複数スレッドでアクセスする際に、mutexなどを使って排他すれば良さそうなものですが、どのくらいの粒度でロックをかけるかによって処理性能は大きく異なります。仕様面で工夫できるなら、排他せずに処理するのが性能面では最適ということも選択肢としてあります。 ある製品で、データのタイムアウトによる削除の関係で本来は排他をすべきところを、タイムアウトまでの時間を長くし、データアクセスと削除が同時に起きることはないような仕様で排他をせずに高速処理を実現しているものがありました。ところが、仕様を見直し、条件によってはできるだけ早くタイムアウト処理を行うということになり、見事に排他していないことによる不正メモリーアクセスが高負荷状態で発生するようになってしまいました。 mutexを使って排他してしまうと、削除以外に参照も排他して
![並列処理と排他の問題:rwlock:プログラマー社長のブログ:オルタナティブ・ブログ](https://cdn-ak-scissors.b.st-hatena.com/image/square/3d9067259b8b59a616222befed3d2e6edc79ae85/height=288;version=1;width=512/https%3A%2F%2Fblogs.itmedia.co.jp%2Fmt-static%2Fsupport%2Fassets_c%2Fuserpics%2Fuserpic-122-100x100.png)