Jak mówi tytuł: Jak właściwie testować i porównywać różne implementacje muteksów w c ++?
Zasadniczo napisałem własną klasę podobną do std :: mutex dla projektu działającego na 2 rdzeniach, armv7, w celu zminimalizowania kosztów ogólnych w niekwestionowanym przypadku. Teraz rozważam użycie wspomnianego muteksu w większej liczbie miejsc i różnych architektur, ale zanim to zrobię, chciałbym się upewnić
- to jest właściwie poprawne
- nie ma żadnych patologicznych przypadków, w których działałby znacznie gorzej niż standardowy std :: mutex.
Oczywiście napisałem kilka podstawowych testów jednostkowych i mikro-testów i wszystko wydaje się działać, ale w kodzie wielowątkowym „wydaje się działać” nie daje mi wielkiego komfortu.
- Czy istnieją jakieś ustalone techniki analizy statycznej lub dynamicznej?
- Jakie są typowe problemy podczas pisania testów jednostkowych dla klas mutex?
- Jakie są typowe przypadki krawędzi, na które należy zwrócić uwagę (pod względem wydajności)?
Używam tylko standardowych typów bibliotek do implementacji, która obejmuje niespójnie spójne operacje ładowania i przechowywania atomów. Jednak przede wszystkim interesują mnie porady agnostyczne dotyczące implementacji, ponieważ chciałbym używać tej samej wiązki testowej również w innych implementacjach.