【发布时间】:2018-05-03 16:10:04
【问题描述】:
我试图了解为什么当我将 FIFO 与 g_io_channel 结合使用时,我的 CPU 会固定为 100%。
我在github 上有一个项目,它通过尽可能小的设置演示了问题;只是一个在 /tmp 中打开 FIFO 的简单服务器,以及一个通过该 FIFO 向服务器发送消息的客户端。
我找到了:
- 首次启动时,服务器占用的 CPU 接近于零
- 一旦客户端通过FIFO向服务器发送消息,服务器接收并打印消息,然后CPU进入100%。
- 您可以继续通过 FIFO 发送消息,服务器将打印它们,但 CPU 保持在 100% :-/
我已经尝试了通常的 google 和堆栈溢出,但到目前为止还没有找到解决方案的乐趣。我希望有人可以帮助我了解发生了什么。我相信我正确地使用了 glib/GTK,但我很高兴能够得到纠正。感谢您提供的任何帮助。谢谢!
【问题讨论】:
-
您是否尝试过使用分析工具分析应用程序(或者只是用
gdb中断它几次,然后查看回溯的样子)? -
我重现了您的问题,确实该程序卡在 GTK+ 主循环中。你应该在你的发行版上安装 GTK+ 的调试包并在 gdb 中运行你的服务器来检查发生了什么。