タイトルが言うように:C++でのミューテックスのさまざまな実装を適切にテストおよびベンチマークするにはどうすればよいですか?
基本的に私は、競合しない場合のオーバーヘッドを最小限に抑えることを目的として、2コアarmv7で実行されるプロジェクト用に独自のstd :: mutexのようなクラスを記述しました。今、私はより多くの場所で、また異なるアーキテクチャーで上記のミューテックスを使用することを検討していますが、これを行う前に、それを確認したいと思います
明らかに、いくつかの基本的な単体テストとマイクロベンチマークを書きましたが、すべてが機能しているように見えますが、マルチスレッドコードでは、「機能しているように見えます」ので快適ではありません。
私は実装に標準のライブラリタイプのみを使用しています。これには、アトミックでの一貫性のないロードおよびストア操作が含まれます。ただし、他の実装にも同じテストハーネスを使用したいので、主に実装にとらわれないアドバイスに関心があります。
問題は複雑です:
複雑さのいくつかの原因は次のとおりです。