0

我有一个相当特殊的问题,我真的不知道从哪里开始寻找发生了什么。

我有一个大量的多线程代码 [单个应用程序,20 多个线程] 正在运行。我向代码发送睡眠信号,几秒钟后继续发送信号唤醒。当应用程序确实唤醒时,如果我从外部应用程序向其中一个线程发送一些消息,则延迟很高,并且响应不会在我预期的超时时间内完成。这大约是 10% 的时间,其余 90% 的代码都在正常运行。

值得一提的是 RHEL6 上的 C++,大量的通信是通过 TCP 或应用程序之间的多播进行的。也许我需要做内核调整,不确定。

我应该从哪里开始寻找任何想法?

4

1 回答 1

0

我怀疑您使用kill(2)发送STOPor信号(在signal(7)TSTP中没有“睡眠”信号) 。

也许您可以在“控制” fifo 或套接字上使用一些简单的文本协议而不是发送信号(或者可能使用dbus。然后您只需将该控制套接字或文件描述符添加到由事件循环管理的 fd 集。(例如通过poll(2)等...)。这与通信应用程序更加正交。

但是你真的应该向我们展示你的代码以获得更精确的提示。

于 2013-09-01T11:24:53.887 回答