В настоящее время я работаю над большим проектом, который недавно внес много изменений, в первую очередь добавление поддержки потоков.Как написать тесты, которые проверяют условия гонки?
При просмотре кода я определил разделы, которые могут потенциально вызвать условия гонки, если не сейчас, то в будущем. Чтобы предотвратить такую регрессию, я хотел бы написать тест, который может надежно обнаружить состояние гонки в этом конкретном регионе, чтобы гарантировать, что никакое будущее не приведет к этой ошибке.
Код не засорен заявлениями sleep(), но является потенциальным тупиком и миномным полем гонки, и я хочу обеспечить надежность.
Этот проект написан полностью на C. Итак, есть ли в любом случае для меня возможность писать модульные тесты для предотвращения условий гонки?
Это чрезвычайно сложно сделать и сильно зависит от конкретных деталей приложения. Это также чрезвычайно сложно и часто невозможно заставить состояние гонки потерпеть неудачу в результате прямого действия. – Gray