самом деле не важно - в текущем треде или нет). Если она закончится раньше некого таймаута - вернуть std::optional с результатом. Если нет - кильнуть ее. Я пробовал это сделать двумя разными способами, но оба через std::future. Первый работает, но я не уверен что состояние футуры не блокируется при разрушении (см. https://en.cppreference.com/w/cpp/thread/future/%7Efuture), во стором - падает с ошибкой pthread. Не подскажете - как это лучше реализовать?
Ссылка на оба варианта: https://godbolt.org/z/a7hsM6sE7
зачем вы в своем коде вызываете деструктор треда...?
Отличный вопрос) На самом деле мне без разницы как - главное кильнуть.
А насколько валидно так использовать деструктор футуры?
Эта задача не решается в общем случае. Нельзя убивать произвольный поток в произвольный момент времени
никакой деструктор нигде не валидно
Это решается через cancellation token и ручное прописывание всех мест, где он должен проверяться
Обсуждают сегодня