std :: async не будет порождать новый поток, если возвращаемое значение не сохраняется

Представьте, что у меня есть lamba foo , которая просто выполняет кое-какие действия и не должна ничего возвращать. Когда я сделаю это:

std::future<T> handle = std::async(std::launch::async, foo, arg1, arg2);

Все работает нормально, и ламба будет создана в новом потоке. Однако, когда я не сохраняю std :: future , который возвращает std :: async , foo будет запущен в основном потоке и заблокирован.

std::async(std::launch::async, foo, arg1, arg2);

Что мне здесь не хватает?

13
задан Mat 28 February 2012 в 22:02
поделиться