Формальное доказательство лучше, чем тестирование для такого рода вещей.
Тестирование покажет вам, что - пока вам не повезло - все это работало.Но тест - тупой инструмент;он может не выполнить точную правильную последовательность и вызвать сбой.
Слишком сложно протестировать каждую возможную последовательность операций, доступную на аппаратном обеспечении, чтобы убедиться, что ваш мьютекс работает при любых обстоятельствах.
Тестированиене без стоимости;это показывает, что вы не допустили явных ошибок кодирования.
Но вам действительно нужна более формальная проверка кода, чтобы продемонстрировать, что он делает правильные вещи в нужное время, чтобы один клиент атомарно захватил ресурс блокировкитребуется для правильного мьютекса.На многих платформах есть специальные инструкции для реализации этого, и если вы используете одну из них, у вас есть реальный шанс сделать это правильно.
Точно так же вы должны показать, что релиз является атомарным.