Мигающий тест на многопоточный код
Тест на пул потоков проходит примерно в 9 запусках из 10. Внутри он стартует воркеры, делает std::this_thread::sleep_for(200ms) и проверяет, что все задачи выполнены.
Что правильно предпринять?
- Увеличить паузу до 2 секунд: десятикратный запас перекроет разброс времени на раннере
- Отключить тест в CI и запускать его вручную перед релизом
- Убрать паузу и дождаться завершения детерминированно (через `future` или condition_variable), а код прогнать под ThreadSanitizer
- Настроить в CI автоматический перезапуск упавших тестов до трёх раз
