C++ promise&lambda

promise&lambda 神器

void CPromiseExample::run(){
    shared_ptr spThis =  shared_from_this();
    boost::future fB = asyncTaskA(101).then([&](boost::future f){
        int nValue = f.get();
        return asyncTaskB(nValue + 1).get();
    }).then([spThis](boost::future f){
        spThis;
        int nValue = f.get();
        return nValue;
    });;

    std::cout<<"endl\n";
}

boost::future CPromiseExample::asyncTaskA(int paraA){
    boost::shared_ptr> promiseA(new boost::promise());
    boost::async([promiseA, paraA]() {
        sleep(5);
        std::cout<<"asyncTaskA\n";
        promiseA->set_value(paraA);
        
    });
    
    return promiseA->get_future();
}

boost::future CPromiseExample::asyncTaskB(int paraB){
    boost::shared_ptr> promiseB(new boost::promise());
    boost::async([promiseB, paraB](){
        sleep(5);
       
        std::cout<<"asyncTaskB\n";
        promiseB->set_value(paraB);
    });
    
    return promiseB->get_future();
}

你可能感兴趣的:(C++ promise&lambda)