/////////////////////////////////////////////////////////////// // Task.cpp - getting answers from thread running task // // // // Jim Fawcett, CSE687 - Object Oriented Design, Spring 2013 // /////////////////////////////////////////////////////////////// #include #include #include std::string getAnAnswer() { return "4"; } class anotherAnswer { public: std::string getAnotherAnswer() { return "answer is still 4"; } }; int main() { std::cout << "\n Demonstrating packaged_task"; std::cout << "\n =============================\n"; std::packaged_task task(getAnAnswer); std::future fut = task.get_future(); std::thread t(std::move(task)); std::cout << "\n The answer is: " << fut.get().c_str(); t.detach(); anotherAnswer aa; std::packaged_task task2(std::bind(&anotherAnswer::getAnotherAnswer, aa)); std::future f2 = task2.get_future(); task2(); std::cout << "\n " << f2.get().c_str(); std::cout << "\n\n"; return 0; }