Считаю, что у меня есть lamba foo
, который просто делает что-то, и ничего не нужно возвращать.
Когда я это сделаю:
std::future<T> handle = std::async(std::launch::async, foo, arg1, arg2);
Все работает отлично, и lamba будет порожден в новом потоке.
Однако, когда я не сохраняю std::future
, который возвращает std::async
, foo будет запускаться в основном потоке и блокировать его.
std::async(std::launch::async, foo, arg1, arg2);
Что мне здесь не хватает?