2011-10-11 13 views
1

は一般的によりmutexをロックしてからC++でディスクを読み込む方が効率的ですか?mutexとディスクのアクセスをロックする

私が実行しているシステムに依存する場合は、これを確認するにはどうすればよいでしょうか? 100万回のロックと100万回のディスク読み取りが動作しますか?

+1

この質問の文脈についてはわかりません。競合がないと仮定すると、ミューテックスロックはカーネルコールとバックエイジンになります。ハードディスクから読み取られたバッファリングされていないディスクとは、ユーザ>カーネル>ドライバ> SATA>コントローラ> movingMechanicalStuff/waitingForSectorを意味します。あなたはより多くの文脈であなたの質問を洗練できますか? –

+0

@MartinJames:非継続型のmutexロックは、カーネル呼び出しを伴わないかもしれません。現代のLinuxでは、ユーザー空間にフラグをテストして設定するだけです。 –

+0

電話スクリーニングの質問ですか? :) – blaze

答えて

5

通常、mutex操作は、ディスク読み取りよりも速いfarになります。その目的は最大のスピードを必要とするからです。実際には、のいずれかのメモリ操作がディスク1より高速である可能性が高いと示唆する危険があります。

もちろん、ディスク情報がメモリにキャッシュされ、 同じバイトを何度も読んでいますが、それは実際にディスクを読み取っているわけではありません。

あなたはこれをチェックしたいとに自分自身を見つける(と私はそれが本当に必要はありません示唆している)場合は、単純に、第二の、どのロック最初のプログラムのカップルをコーディングし、ミューテックスに百万回のロックを解除していますディスクから数百万の異なる情報を読み取る。

実行して比較します。奇妙な要因によって、ディスクの読み込み速度が速くなった場合は、コードを表示して、間違ったことを説明します:-)

+1

私は、キャッシュの読み込みでも、ロックのいくつかのフォームが必要と想像しています... – stefaanv

4

mutexをロックすると、farになります。 RAM + CPUはであり、最も速いSSDよりも速くです。

関連する問題