質問

専用サーバーで実行されている最適なスレッドカウントを備えたプログラムを検討してください。したがって、1つのスレッドがロックされている場合、CPU時間を待っている他のプログラムはありません。 Spin Lockは、そのような状況で可能なすべての場合において、Mutexよりも優れたパフォーマンスを提供しますか?

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

役に立ちましたか?

解決

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

他のヒント

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top