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; 
}` 

Ricevo l'errore che la promessa è già soddisfatta. Come riutilizzare lo stesso oggetto di promessa?Come riutilizzare boost :: promise object dopo aver ottenuto il suo valore futuro?

risposta

4

sostituirlo con una promessa inutilizzato:

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

grazie Mike! :) – Bakkya

+1

utilizzando in questo modo è possibile liberare il valore memorizzato nella variabile promessa – Bakkya

+1

e quindi possiamo assegnare un nuovo valore alla stessa variabile senza assegnare un nuovo spazio di memoria per la nuova variabile – Bakkya