【问题标题】:boost::asio and recursive server callsboost::asio 和递归服务器调用
【发布时间】: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


【解决方案1】:

我实际上发现问题出在 SSL 套接字上——当服务器调用自身时,握手函数会死锁。可能与 asio ssl 代码中的一条链有关。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-27
相关资源
最近更新 更多