Qpid中客戶端關閉與異步回調

Qpid使用異步回調機制實現通訊,提高通訊效率。 其中,客戶端發收接收也是使用該機制。這樣客戶端須要退出時,可能IO線程正在回調,並使用須要析構的對象。所以在客戶端退出時,須要確保析構的對象不會再被回調使用。 異步

Qpid客戶端與鏈接相關的對象是: socket

                            IOThread(Poller) 線程

Connection ---> ConnectionImpl -->TCPConnector -->AsyncIO 對象

                                                            ConnectionHandler it

一、ConnectionImpl的shared_ptr在釋放時,ConnectionImpl::release=>TCPConnector::close=>AsyncIO::queryWriteClose io

二、這些會引發TCPConnector的socketClosed回調。 效率

三、該回調再調用shutdownHandler->shutdown(),即ConnectionImpl中的shutdown,設置可結束標記。 sed

相關文章
相關標籤/搜索