gpt4 book ai didi

c++ - COM 服务器挂起检测和解决

转载 作者:太空狗 更新时间:2023-10-29 23:09:49 24 4
gpt4 key购买 nike

我有一个应用程序将请求发送到处理请求并将它们发送回请求应用程序的进程外 COM 服务器。

客户端应用程序真正控制着这个进程外 COM 服务器的启动和停止,可以说决定了它的生命周期。

因为此应用程序在任何给定时间都有数百个请求,所以它通常至少有 4 个相同的 COM 服务器来处理这些请求。

问题是有时这个 COM 服务器在处理一个请求时挂起,这个请求被请求应用程序捕获,它会杀死进程外的 COM 服务器。然而,这并不总是发生。

有时会发生客户端应用程序请求 COM 服务器终止,这会导致客户端释放对 COM 服务器的所有引用,但 COM 服务器最终只使用 25% 的 CPU,并且永远不会死机。它似乎只是挂起并不断使用 CPU。

如果 COM 服务器进程未能终止,客户端有机制尝试强行终止它,但即使在 COM 服务器进入 CPU 使用率并挂起的情况下,即使这样似乎也不起作用。

有没有人经历过类似的事情或者对如何解决这种情况有一些建议?

最佳答案

您需要设计 COM 服务器中的所有调用,以便它们都能在相当短的时间内结束。一旦来自客户端的新调用到达,COM 就会产生一个单独的线程并将调用分派(dispatch)到该线程上。没有可靠的方法来中断通话 - 通话需要自行结束(只需返回)。您可以通过适当设计算法来实现这一目标。

关于c++ - COM 服务器挂起检测和解决,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3546184/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com