#include #include #include #ifdef WIN32 #include #else #include #endif #ifdef WIN32 #define mysleep Sleep(2000); #else #define mysleep usleep(2000); #endif class Test { private: std::vector state; std::vector::iterator it; std::vector isAvailable; public: Test() { this->it = this->state.begin(); } void called_from_async() { std::cout << "called from async" << std::endl; this->state.insert(this->it ,10); } std::string returned_from_async() { mysleep; return "Async call"; } template void print_results(ASYNC &f) { std::string result = f.get(); std::cout << result.c_str() << std::endl; } int getState(int pos) { return this->state.at(pos); } int getStateSize() { return this->state.size(); } }; int main() { Test test; std::future result(std::async(&Test::called_from_async, &test)); auto f1 = std::async(std::launch::async, &Test::returned_from_async, &test); std::cout << "Message from main." << std::endl; do { std::cout << test.getStateSize(); } while (test.getStateSize()<1); #ifdef _DEBUG auto i = 0; std::cout << "wait for close"; std::cin >> i; #endif return 0; }