タイトルにあるように、C ++のmutexのさまざまな実装を適切にテストおよびベンチマークするにはどうすればよいですか?
基本的に、2つのコアarmv7で実行されるプロジェクトのstd :: mutexのようなクラスを作成し、競合しない場合のオーバーヘッドを最小限に抑えました。今、私は上記のミューテックスをより多くの場所と異なるアーキテクチャで使用することを検討していますが、これを行う前に、
- それは実際に正しいです
- 標準のstd :: mutexよりもパフォーマンスが悪い病理学的なケースはありません。
明らかに、いくつかの基本的な単体テストとマイクロベンチマークを書いたので、すべてがうまくいくように見えますが、マルチスレッドコードでは「動作しているように見える」ので、それほど快適ではありません。
- それで、確立された静的または動的分析技術はありますか?
- ミューテックスクラスの単体テストを記述する際の一般的な落とし穴は何ですか?
- 注目すべき典型的なエッジケースは何ですか?
実装には標準ライブラリタイプのみを使用します。これには、アトミックでの非一貫性のロードおよびストア操作が含まれます。ただし、他の実装にも同じテストハーネスを使用したいので、主に実装に依存しないアドバイスに興味があります。