【发布时间】:2010-12-07 11:31:46
【问题描述】:
boost::asio 是否正确处理递归服务器连接?
我有一个 TCP/IP 异步服务器,它从 async_read 处理程序中连接到自身,并且似乎死锁:下一个 async_accept 正在工作,但 async_read 阻塞。
服务器基于带有线程池的 http asio 示例。
它实现了客户端正在使用的特定 API,并且还可以将一些功能委托给另一台服务器(充当代理或云节点)。问题是当另一个服务器是本地主机(例如它自己)时,死锁会发生在 asio 库中的某个地方。
有什么建议吗?
【问题讨论】:
-
好吧,我实际上发现 ASIO 中存在导致死锁的全局 SSL 链。这很不幸,因为我现在必须寻找解决方法。事实上,有一个补丁可以改善这种情况但并不能完全解决它:svn.boost.org/trac/boost/ticket/3958
标签: c++ boost tcp boost-asio