Сообщение Re[4]: asio готовится к принятию в стандарт? от 17.05.2015 9:39
Изменено 17.05.2015 9:40 niXman
Здравствуйте, fdn721, Вы писали:
F>А как? Ну вот к примеру стандартная ситуация:
F>
F>Как с этим бороться без кучи костылей???
нет смысло говорить о "высоком", видя в коде такое:
F>А как? Ну вот к примеру стандартная ситуация:
F>
F>class MyClient
F>{
F>protected:
F> tcp::socket m_socket;
F>public:
F> bool Open()
F> {
F> ....
F> m_socket.async_connect( m_endpoint, boost::bind( &MyClient::HandleConnect, this, _1 ) );
F> }
F> void Close()
F> {
F> m_socket.close()
F> }
F>protected:
F> void HandleConnect( const boost::system::error_code& err )
F> {
F> //do somthing
F> }
F>}
F>int main()
F>{
F> ...
F> MyClient *client = new MyClient();
F> client->Open();
F> client->Close(); //<<---- Тут ASIO запланирует вызов HandleConnect со значением error::operation_aborted.
F> delete client; //<<---- А сам вызов HandleConnect может быть уже после удаления client.
F> ...
F>}
F>
F>Как с этим бороться без кучи костылей???
нет смысло говорить о "высоком", видя в коде такое:
поверьте, не в asio ваши проблемыMyClient *client = new MyClient();
...
delete client;
Здравствуйте, fdn721, Вы писали:
F>А как? Ну вот к примеру стандартная ситуация:
F>
F>Как с этим бороться без кучи костылей???
нет смысла говорить о "высоком", видя в коде такое:
F>А как? Ну вот к примеру стандартная ситуация:
F>
F>class MyClient
F>{
F>protected:
F> tcp::socket m_socket;
F>public:
F> bool Open()
F> {
F> ....
F> m_socket.async_connect( m_endpoint, boost::bind( &MyClient::HandleConnect, this, _1 ) );
F> }
F> void Close()
F> {
F> m_socket.close()
F> }
F>protected:
F> void HandleConnect( const boost::system::error_code& err )
F> {
F> //do somthing
F> }
F>}
F>int main()
F>{
F> ...
F> MyClient *client = new MyClient();
F> client->Open();
F> client->Close(); //<<---- Тут ASIO запланирует вызов HandleConnect со значением error::operation_aborted.
F> delete client; //<<---- А сам вызов HandleConnect может быть уже после удаления client.
F> ...
F>}
F>
F>Как с этим бороться без кучи костылей???
нет смысла говорить о "высоком", видя в коде такое:
поверьте, не в asio ваши проблемыMyClient *client = new MyClient();
...
delete client;