When calling `std::async`, it creates new thread. Better having thread pool and enqueue to it functions and lambdas with return of `std::future`.