在有些场合,比如只执行一次的线程,可以用std::future代替,并且,std::future可以有返回值。
#include <future>
#include <iostream>
bool is_prime(int x)
{
printf("begin is_prime\n");
if (x/2 == 0)
{
return false;
}
printf("end is_prime\n");
return true;
}
int main()
{
std::future<bool> fut = std::async(std::launch::async, is_prime, 10);
std::cout << "please wait\n";
std::chrono::milliseconds span(100);
while (fut.wait_for(span) != std::future_status::ready)
{
std::cout << ".";
}
std::cout << std::endl;
bool ret = fut.get();
std::cout << "final result: " << ret << std::endl;
return 0;
}