vla*_*mir 5 c++ sockets boost boost-asio
我正在为我的服务器应用程序使用 boost 异步套接字。我创建了一个disconnect()函数,它调用boost的close(),然后删除套接字(操作符delete)。当从异步之一调用该函数时,这是可以的。处理程序,但是当我从主代码库内部调用它时,整个应用程序在其中一个异步处理程序处崩溃。如何在boost中很好地关闭套接字?
确保只要可能使用该对象的处理程序存在,该对象就处于活动状态。
在您调用 close 之后,很可能会调用使用此套接字的处理程序之一(因为它向处理程序报告错误),然后访问死指针...
boost::shared_ptr通常,可以使用和boost::enable_shared_from_this并将其传递到处理程序中轻松完成生命周期处理。请参阅 Boost.Asio 提供的大量示例。
一旦您熟悉了这种技术,您提出的问题对您来说就会显得微不足道。
| 归档时间: |
|
| 查看次数: |
2113 次 |
| 最近记录: |