Considere que tengo lamba foo
que solo hace algunas cosas y no necesita devolver nada. Cuando hago esto:std :: async no engendrará un nuevo hilo cuando no se almacena el valor de retorno
std::future<T> handle = std::async(std::launch::async, foo, arg1, arg2);
todo funciona bien y el Lamba se dio lugar en un nuevo hilo. Sin embargo, cuando no almaceno el std::future
que devuelve el std::async
, el foo se ejecutará en el hilo principal y lo bloqueará.
std::async(std::launch::async, foo, arg1, arg2);
¿Qué es lo que falta aquí?
Quizás el '' 'future''' devuelto por' '' async''' se destruye inmediatamente. No me sorprendería si '' 'el destructor' future''' tiene una espera implícita adentro. –