1

専用サーバーで実行されている最適なスレッド数のプログラムを検討してください。1つのスレッドがロックされている場合、他のスレッドは(ほとんど)CPU時間を待機しません。スピンロックは、そのような状況で考えられるすべての場合に、ミューテックスよりも優れたパフォーマンスを提供しますか?

[編集]いくつかの説明:スレッド間のCPU時間の競合がないため、スレッドは他のスレッドのパフォーマンスに影響を与えることなくスピンロックを使用できます。スピンロックは、十分に重い可能性のある待機モードに切り替わりません(少なくとも、Windowsでは、Linuxでのパフォーマンスを確認してください)。

4

3 に答える 3

1

あなたの前提はあまり現実的ではありません。おそらく、プロセスには最適な数のスレッドがあり、オペレーティングシステムの残りの部分にはに何百ものスレッドがあります。そのうちのいくつかは実行の準備ができている可能性があり、スレッドが解放されたときにCPUコアを喜んで取得します。さらに、スレッドがブロックされようとしている場合は、プロセス内の他のスレッドの1つによって保持されているロックが原因で発生する可能性があります。スピン待機時間中にそれを解放する可能性があります。スレッドの数はそれに関係ありません。したがって、スピン待機することは依然として理にかなっています。

于 2011-01-14T18:32:40.797 に答える
0

この場合、スピンロックの方がうまくいくと思います。コードを最適化しようとしない限り、ミューテックスは実際には必要ありません。また、I / Oなどのさまざまな時間に依存します...また、待機モードについても良い点があります。

于 2011-01-14T18:12:52.710 に答える
0

カーネルへの移行がないため、スピンロックの方がおそらく最適です。しかし、このシナリオは非常に工夫されているため、実際のコードに適用しようとしないことをお勧めします。

于 2011-01-14T18:41:33.057 に答える