"Политика запуска по умолчанию для std :: async - это std :: launch :: any, что означает, что реализация может выбирать за вас."
Вам нужно std::launch::async
, в основном:
std::future<int> the_answer=std::async(std::launch::async, calculate_the_answer_to_LtUaE);
// ^^^^^^^^^^^^^^^^^^
Чтобы убедиться, что асинхронный вызов помещен в новый поток.В противном случае он может просто отложить вызов функции вычисления до the_answer.get()
и вызвать ее в текущем потоке.