【发布时间】:2013-01-22 13:24:13
【问题描述】:
一点背景:
我正在开发一个使用 RPC 通过网络进行通信的 Windows 程序。网络连接不断建立和断开。 RPC 调用是同步的,但有多个客户端线程同时运行。这些程序是对称的——也就是说,双方都充当客户端和服务器,并且运行完全相同的软件。它使用标准 Windows API 在 C++ 中实现。
问题:
Process Explorer 报告的线程句柄数会随着时间的推移而增加。看起来线程是由 RPC 运行时创建来处理请求的,但是当线程被回收时,句柄并不总是被清除。
这个数字会增加,尤其是在传输大量数据或同时发生许多呼叫时(这两个因素同时存在,我不确定哪个是相关的)。
一个活动服务器可以在几天内建立数千个未使用的线程句柄,而在任何时候都不会使用超过 20 个线程。
问题:
我可以做些什么来防止手柄数安装,因为我认为这可能会导致客户站点的稳定性问题?
【问题讨论】:
标签: c++ windows multithreading rpc handles