Как видно из заголовка: как правильно тестировать и тестировать различные реализации мьютексов в c ++?
По сути, я написал свой собственный класс, похожий на std :: mutex, для проекта, работающего на 2 ядрах, armv7, с целью минимизировать накладные расходы в неоспоримом случае. Сейчас я рассматриваю возможность использования указанного мьютекса в других местах, а также в других архитектурах, но прежде чем я сделаю это, я хотел бы убедиться, что
- это действительно правильно
- нет никаких патологических случаев, в которых он работает намного хуже, чем стандартный std :: mutex.
Очевидно, я написал несколько базовых модульных тестов и микро-тестов, и все, кажется, работает, но в многопоточном коде «кажется, работает» не дает мне большого комфорта.
- Итак, существуют ли какие-либо методы статического или динамического анализа?
- Каковы распространенные подводные камни при написании модульных тестов для классов мьютекса?
- На какие типичные крайние случаи следует обращать внимание (с точки зрения производительности)?
Я использую только стандартные типы библиотек для реализации, которая включает в себя непоследовательные последовательные операции загрузки и хранения на атомарных элементах. Тем не менее, я в основном заинтересован в рекомендациях, не зависящих от реализации, так как я хотел бы использовать тот же тестовый комплект для других реализаций.