この場合にロックを使用するのが遅すぎることに気付いた場合は、はるかに大きな問題があります。ロックが競合していない場合、私のシステム(2.0 GHz Core 2 Quad)では約75ナノ秒かかります。もちろん、それが争われるとき、それは幾分長くかかるでしょう。Enqueue
ただし、ロックはまたはへの呼び出しを保護しているだけなのでDequeue
、ログ書き込みの合計時間が75ナノ秒をはるかに超える可能性はほとんどありません。
ロックが問題である場合、つまり、スレッドがそのロックの背後に並んでいて、アプリケーションで顕著な速度低下を引き起こしている場合は、ロックフリーキューを作成してもあまり役に立たない可能性があります。なんで?実際にログに大量の書き込みを行っている場合、ロックフリーのブロッキングキューが非常に速くいっぱいになり、I/Oサブシステムの速度に制限されるためです。
Queue<string>
単純なロックで保護されているに、1秒間に200ログエントリのオーダーで書き込むマルチスレッドアプリケーションがあります 。重大なロックの競合に気づいたことはなく、処理が少しでも遅くなることはありません。その75nsは、他のすべてを実行するのにかかる時間によって小さくなります。