2013-10-14 10 views
19

Ho letto il codice di esempio del server boost asio http (vedere http://www.boost.org/doc/libs/1_54_0/doc/html/boost_asio/example/cpp11/http/server/connection.cpp) e ho trovato che la variabile auto self(shared_from_this()); è stata utilizzata nell'ambito di cattura ([this, self]). Ma la variabile autonoma non è stata utilizzata nella funzione lambda. Allora qual è il vantaggio di farlo?Qual è il motivo dell'uso della variabile auto self (shared_from_this()) nella funzione lambda?

risposta

26

Questo viene fatto al fine di assicurarsi che connection oggetto sopravvive l'operazione asincrona: (. Cioè l'asincrono operazione è in corso) finché il lambda è vivo, l'istanza connection è vivo pure.

+0

Buona spiegazione. Potrebbe per caso avere un'opinione sulla domanda di follow-up su http://stackoverflow.com/q/29613178/836097? –

Problemi correlati