Есть ли способ определить, работает ли поток? Я не могу использовать std::future
и std::async
по нескольким причинам.Проверьте, работает ли std :: thread
Я думал о каком-то join
с таймаутом, например. попробуйте присоединиться к потоку в течение 3 секунд, если он преуспеет, поток считается завершенным, иначе он считается запущенным.
Я думаю, вы хотите 'joinable'. Посмотрите документацию: http://www.cplusplus.com/reference/thread/thread/joinable/ –
Если объект функции, вызванный потоком, находится под вашим контролем, самым простым вариантом является установка флага, связанного с 'std :: thread', когда поток заканчивается. Проверяя, жив ли поток, просто проверьте текущее состояние флага. – user4815162342
Но 'joinable' скажет только, если поток присоединен или нет. Даже когда поток завершил выполнение. Или я ошибаюсь? – Nidhoegger