【发布时间】:2017-10-16 13:57:42
【问题描述】:
我正在使用 thrift 来提供设备和管理控制台之间的接口。一次最多可以有 4 个与设备的活动连接,我使用 TThreadPool 服务器进行此操作。
问题出现在客户端断开连接;如果客户端正确断开连接,则没有问题,但是如果没有(即客户端崩溃或未调用 client->close()),则服务器似乎使该客户端线程保持活动状态。这意味着当进行下一次连接尝试时,客户端会挂起,因为服务器已用完其分配的线程池,因此无法为新请求提供服务。
我找不到任何标准的公共机制,如果客户端在设定的时间段内没有使用接口,服务器可以通过该机制停止并因此释放客户端线程?
thrift 中是否有标准的方法来促进这一点?
【问题讨论】:
-
理论上,服务器迟早会发现连接断开并将线程返回到池中。你能提供MCVE吗?
标签: c++ interface embedded threadpool thrift