2016-07-07 2 views
-3

Если у меня есть тестовый пример следующегоGTEST как остановить все запущенные потоки

TEST(one, test_one) { 
    vector<thread> threads 
    // ... initialize threads 
} 

и где-то в этих потоках утверждение терпит неудачу, как я остановить все потоки и прекратить? потому что кажется, что функция продолжает выполняться на данный момент.

+2

О, мальчик, это полностью зависит от того, как вы синхронизировали свои потоки с любым условием _runnable_. –

+0

Возможно, что-то в строках [Тесты смерти] (http://stackoverflow.com/questions/3698718/what-are-google-test-death-tests). –

ответ

1

как остановить все потоки и прекратить работу?

Это не может быть сделано без взаимодействия с тестируемым классом и фактически связанными с ним потоками.

Если у вас есть тест класса, который включает в себя запуск нескольких потоков, вы должны иметь некоторую реализацию в деструкторе, чтобы сигнализировать потоки, чтобы остановить их и присоединиться к ним.


Хотя я мог думать о чем-то вдоль линий death test выручая из ожидаемого assert() заявления, и весь процесс был убит (следовательно, нет необходимости беспокоиться о других потоках быть прекращен).

+0

Я предполагаю, что тот же человек, который отклонил вопрос, сделал то же самое здесь – Curious

+0

@KerrekSB. –

Смежные вопросы