昨天在调试项目工程的时候遇到了一个现象:
因为,我在ocx和服务器之间做了一个tcp连接,为了检测连接是否断开,所以手动做了一个保活,即,每隔一段时间就给对方发送一个保活请求。当检测到连接断开后,ocx启动重新连接!问题来了,当重新连接后,程序不会退出重连,而是不断的连接。经过排查,问题的原因是:asio.run()的使用问题。
查询asio官网,在run函数的说明下面,有这么一句话:
The
run()
function must not be called from a thread that is currently calling one of run