Por que o destruidor de um futuro retornou do bloqueio do `std :: async`?
Ao tentar responder outraPergunta do Stackoverflow, Percebi que esse trecho simples do C ++ 11 está bloqueando implicitamente o segmento de chamada:
std::async(std::launch::async, run_async_task)
Para mim, isso teria parecido a maneira canônica do C ++ 11 de iniciar uma tarefa de forma assíncrona, sem se importar com o resultado. Em vez disso, é necessário criar e desanexar explicitamente um segmento (consulteresponda questão mencionada) para conseguir isso.
Então, eis a minha pergunta: existe alguma razão em relação à segurança / correção que o destruidor de umstd::future
tem que estar bloqueando? Não seria suficiente se ele bloquearget
somente e caso contrário, se não estou interessado no valor de retorno ou exceção, é simplesmente disparar e esquecer?