// future example // adapted from http://www.cplusplus.com/reference/future/future/ #include // std::cout #include // std::async, std::future #include // std::chrono::milliseconds // a non-optimized way of checking for prime numbers. bool is_prime (long int x) { for (long int i=2; i fut = std::async(std::launch::async, is_prime, p); // do something while waiting for function to set future: std::cout << "checking, please wait" << std::flush; std::chrono::milliseconds span(500); while (fut.wait_for(span) == std::future_status::timeout) { std::cout << '.' << std::flush; } std::cout << std::endl; bool x = fut.get(); // retrieve return value std::cout << p << " " << (x?"is":"is not") << " prime." << std::endl; } void implicitly_waiting() { long int p2 = 685102597328182763; std::future fut = std::async(std::launch::async, is_prime, p2); std::cout << "just getting the result, doing an implicit wait():" << std::endl; bool x = fut.get(); std::cout << p2 << " " << (x?"is":"is not") << " prime." << std::endl; } int main () { explicitly_waiting(); implicitly_waiting(); return 0; }