int main()
{
try { // start one thread to query a number
shared_future<int> f = async(queryNumber);
// start three threads each processing this number in a loop
auto f1 = async(launch::async,doSomething,'.',f);
auto f2 = async(launch::async,doSomething,'+',f);
auto f3 = async(launch::async,doSomething,'*',f);
// wait for all loops to be finished
f1.get();
f2.get();
f3.get();
}
catch (const exception& e) {
cout << "\nEXCEPTION: " << e.what() << endl;
}
cout << "\ndone" << endl;
}