При попытке ответить на другой вопрос qaru.site/info/202394/... я понял, что этот простой фрагмент С++ 11 неявно блокирует вызывающий поток:
std::async(std::launch::async, run_async_task)
Мне казалось бы, что канонический С++ 11 запускает задачу асинхронно, не заботясь о результатах. Вместо этого нужно явно создать и отключить поток (см. ответ на упомянутый вопрос), чтобы достичь этого.
Итак, вот мой вопрос: есть ли какая-либо причина в отношении безопасности/правильности, которую должен блокировать деструктор std::future
? Было бы недостаточно, если бы он блокировался только на get
и в противном случае, если меня не интересует возвращаемое значение или исключение, оно просто срабатывает и забывается?