Como dice el título: ¿Cómo prueba y compara adecuadamente diferentes implementaciones de mutexes en c ++?
Esencialmente escribí mi propia clase std :: mutex para un proyecto que se ejecuta en un núcleo 2, armv7 con el objetivo de minimizar la sobrecarga en el caso no disputado. Ahora estoy considerando usar dicho mutex en más lugares y también en arquitecturas diferentes, pero antes de hacer esto me gustaría asegurarme de que
- en realidad es correcto
- No hay ningún caso patológico en el que funcione mucho peor que un estándar std :: mutex.
Obviamente, escribí algunas pruebas unitarias básicas y micro puntos de referencia y todo parece funcionar, pero en el código multiproceso "parece funcionar" no me da una gran comodidad.
- Entonces, ¿existen técnicas establecidas de análisis estático o dinámico?
- ¿Cuáles son las dificultades comunes al escribir pruebas unitarias para clases mutex?
- ¿Cuáles son los casos límite típicos que uno debe tener en cuenta (en cuanto al rendimiento)?
Solo estoy usando tipos de biblioteca estándar para la implementación, que incluye operaciones de carga y almacenamiento no secuenciales consistentes en atómicas. Sin embargo, estoy principalmente interesado en los consejos agnósticos de implementación, ya que también me gustaría usar el mismo arnés de prueba para otras implementaciones.