std :: async не создаст новый поток, если возвращаемое значение не сохранено
Считай, у меня есть ламба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);
Что мне здесь не хватает?