#include <iostream>
#include <future>
#include <chrono>
std::string fetchData() {
std::this_thread::sleep_for(std::chrono::seconds(10)); // Simulates a network call
return "Data fetched";
}
int main() {
std::cout << "Fetching data..." << std::endl;
std::future<std::string> futureData = std::async(std::launch::async, fetchData);
std::string data = futureData.get(); // Blocks until the result is available
std::cout << data << std::endl; // Output: Data fetched
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8ZnV0dXJlPgojaW5jbHVkZSA8Y2hyb25vPgoKc3RkOjpzdHJpbmcgZmV0Y2hEYXRhKCkgewogICAgc3RkOjp0aGlzX3RocmVhZDo6c2xlZXBfZm9yKHN0ZDo6Y2hyb25vOjpzZWNvbmRzKDEwKSk7IC8vIFNpbXVsYXRlcyBhIG5ldHdvcmsgY2FsbAogICAgcmV0dXJuICJEYXRhIGZldGNoZWQiOwp9CgppbnQgbWFpbigpIHsKICAgIHN0ZDo6Y291dCA8PCAiRmV0Y2hpbmcgZGF0YS4uLiIgPDwgc3RkOjplbmRsOwogICAgc3RkOjpmdXR1cmU8c3RkOjpzdHJpbmc+IGZ1dHVyZURhdGEgPSBzdGQ6OmFzeW5jKHN0ZDo6bGF1bmNoOjphc3luYywgZmV0Y2hEYXRhKTsKICAgIHN0ZDo6c3RyaW5nIGRhdGEgPSBmdXR1cmVEYXRhLmdldCgpOyAvLyBCbG9ja3MgdW50aWwgdGhlIHJlc3VsdCBpcyBhdmFpbGFibGUKICAgIHN0ZDo6Y291dCA8PCBkYXRhIDw8IHN0ZDo6ZW5kbDsgLy8gT3V0cHV0OiBEYXRhIGZldGNoZWQKICAgIHJldHVybiAwOwp9Cg==