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