如何改善多线程应用程序的延迟?

时间:2013-09-01 07:56:57

标签: c++ linux

我有一个相当奇怪的问题,我真的不知道从哪里开始寻找正在发生的事情。

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

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

我应该开始寻找什么想法?

1 个答案:

答案 0 :(得分:0)

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

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

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