future::wait_for



#include <thread>
#include <future>
#include <iostream>
#include <chrono>
                                                                                                                
using std::thread,
    std::promise,
    std::future,
    std::future_status,
    std::cerr;

    
int main(){
    promise<int> p;
    future<int> f = p.get_future();

    auto thread1 = [](promise<int>* pr, int n){
        int r = n * 3;
        std::this_thread::sleep_for(std::chrono::milliseconds(5000));
        pr->set_value(r);
    };

    thread t(thread1, &p, 45);

    future_status status;
    std::chrono::milliseconds ms{1000};

    cerr << "waiting...\n";
    while((status = f.wait_for(ms)) != future_status::ready){
        cerr << "waiting...\n";
    }

    t.join();
    cerr << "result: " << f.get() << "\n";
    return 0;
}      
C++ Examples© 2024 TBD