2015-01-05 3 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; 
}` 

Ich bekomme den Fehler, dass das Versprechen bereits erfüllt ist. Wie kann man das gleiche Versprechen nehmen?Wie kann das boost :: promise-Objekt wiederverwendet werden, nachdem es seinen zukünftigen Wert erhalten hat?

Antwort

4

Ersetzen Sie es mit einem nicht verwendeten Versprechen:

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

Dank Mike! :) – Bakkya

+1

Mit dieser Methode können wir den in der Variablen – Bakkya

+1

gespeicherten Wert freigeben und somit können wir der gleichen Variablen einen neuen Wert zuweisen, ohne einen neuen Speicherplatz für die neue Variable zuzuweisen – Bakkya

Verwandte Themen