Wie der Titel sagt: Wie testen und bewerten Sie verschiedene Implementierungen von Mutexen in c ++ richtig?
Im Grunde habe ich meine eigene std :: mutex-ähnliche Klasse für ein Projekt geschrieben, das auf einem 2-Kern-System (armv7) läuft, mit dem Ziel, den Overhead im unbestrittenen Fall zu minimieren. Jetzt überlege ich, besagten Mutex an mehreren Stellen und auch an verschiedenen Architekturen zu verwenden, aber bevor ich das tue, möchte ich das sicherstellen
- es ist tatsächlich richtig
- Es gibt keine pathologischen Fälle, in denen es viel schlechter abschneidet als ein Standard-std :: mutex.
Natürlich habe ich ein paar grundlegende Unit-Tests und Micro-Benchmarks geschrieben und alles scheint zu funktionieren, aber im Multithread-Code "scheint zu funktionieren" gibt mir keinen großen Komfort.
- Gibt es also etablierte statische oder dynamische Analysetechniken?
- Was sind häufige Fallstricke beim Schreiben von Komponententests für Mutex-Klassen?
- Was sind typische Randfälle, auf die man (in Bezug auf die Leistung) achten sollte?
Ich verwende nur Standardbibliothekstypen für die Implementierung, die nicht sequentiell konsistente Lade- und Speicheroperationen für Atomics umfassen. Ich bin jedoch hauptsächlich an implementierungsunabhängigen Ratschlägen interessiert, da ich das gleiche Testkabel auch für andere Implementierungen verwenden möchte.