Comme le titre l'indique: Comment testez-vous et testez-vous correctement différentes implémentations de mutex en c ++?
Essentiellement, j'ai écrit ma propre classe de type std :: mutex pour un projet fonctionnant sur un noyau 2, armv7 dans le but de minimiser les frais généraux dans le cas non contesté. Maintenant, j'envisage d'utiliser ledit mutex dans plus d'endroits et également dans différentes architectures, mais avant de le faire, je voudrais m'assurer que
- c'est en fait correct
- il n'y a aucun cas pathologique dans lequel il fonctionne bien pire qu'un std :: mutex standard.
Évidemment, j'ai écrit quelques tests unitaires de base et des micro-benchmarks et tout semble fonctionner, mais en code multi-thread "semble fonctionner" ne me donne pas beaucoup de confort.
- Existe-t-il donc des techniques d'analyse statique ou dynamique établies?
- Quels sont les pièges courants lors de l'écriture de tests unitaires pour les classes mutex?
- Quels sont les cas de bord typiques à surveiller (en termes de performances)?
J'utilise uniquement des types de bibliothèques standard pour l'implémentation, qui comprend des opérations de chargement et de stockage non cohérentes sur Atomics. Cependant, je suis principalement intéressé par les conseils agnostiques d'implémentation, car j'aimerais également utiliser le même faisceau de test pour d'autres implémentations.