4

この質問は、待ち時間を犠牲にせずに CPU 時間の使用を減らす方法でスピン ロックを改善できるかどうかを尋ねます。回答の大規模なリストは、C++ 11、Boost などの高レベル言語の概念を示唆しています。

私が最初に考えたのは、単純な C セマフォを使用することでした。これは、ポスターがブロックする必要があるのはバッファーが空またはいっぱいの場合だけだからです。

ただし、回答を作成する過程で、これらの関数のオーバーヘッドが実際に何であるかがわからないことに気付きました。直感的には、それは小さくあるべきだと思われ、私にとっては最適化の問題ではありませんでしたが、おそらくそれはスピンロックに対してかなりのものです. おそらくそれもシステムに依存しています。

この質問への回答は、1 つ未満のスレッド クォンタムをロックする場合はスピン ロックが優先されることを示唆していますが、その理由についての実際の兆候は示されていません。

この質問への回答は、本体に pthread_wait を持つスピン ロックを使用する C++ でのセマフォ実装の実例を提供しますが、実際の言語実装からは取得されていません。

ここで、ミューテックスとセマフォの速度の違いに関する質問は、重要ではないと宣言されている人もいます。他の人は、セマフォが遅いと言います。

この質問によってリンクされた記事は、2.4GhZ マシンでミューテックスの C# ロック コマンドが実際に 50ns かかることを示唆しています (つまり、約 100 サイクル)。ただし、C# の実装が、たとえば POSIX セマフォの単純な C 実装を代表しているかどうかは不明です。

したがって、問題は、実際のセマフォ使用のオーバーヘッドとは何かということです。また、延長として、私が気にするのがレイテンシーだけである場合 (つまり、何らかの理由で保守性ではない場合) は、いつスピンロックを優先する必要がありますか?

4

1 に答える 1