2015-01-05 5 views
5
void sss(boost::promise<std::string>& res) 
{ 
    res.set_value("hi"); 
} 

void yyy(boost::promise<std::string>& res) 
{ 
    res.set_value("hello"); 
} 

int main() 
{ 
    boost::thread th; 
    boost::promise<std::string> a; 
    th = boost::thread(sss, boost::ref(a)); 
    th.join(); 
    std::cout << a.get_future().get() << std::endl; 
    th = boost::thread(yyy, boost::ref(a)); 
    th.join(); 
    std::cout << a.get_future().get() << std::endl; 
}` 

मुझे यह त्रुटि मिल रही है कि वादा पहले ही संतुष्ट है। वादे की एक ही वस्तु का पुन: उपयोग कैसे करें?भविष्य का मूल्य प्राप्त करने के बाद बूस्ट :: वादा ऑब्जेक्ट का पुन: उपयोग कैसे करें?

उत्तर

4

एक अप्रयुक्त वादे के साथ यह बदलें:

a = boost::promise<std::string>(); 
+0

धन्यवाद माइक! :) – Bakkya

+1

इस तरह से हम वादे चर – Bakkya

+1

में संग्रहीत मूल्य को मुक्त कर सकते हैं और इस प्रकार हम नए चर के लिए एक नई मेमोरी स्पेस आवंटित किए बिना एक ही चर के लिए एक नया मान असाइन कर सकते हैं – Bakkya

संबंधित मुद्दे