c++ - 在 C++ linux 中使用 glib.h 中的 GMainLoop 而不是 "while(true);"有什么优势?

标签 c++ c linux glib

我遇到过他们需要无限循环的代码,他们使用了

    GMainLoop *mainloop = NULL;

    mainloop = g_main_loop_new (NULL, FALSE);
    g_main_loop_run (mainloop);

我怀疑他们为什么不使用 while(true); 来达到同样的目的。 GMainLoop 内部做了什么,在内部是不是一样。 GMainLoop 如何提升性能。

最佳答案

g_main_loop 表示 glib 中的主事件循环。这不仅仅是一个无限循环;它轮询事件源,对从中获取的事件进行排队,并调用事件处理程序。它也不会那么忙;也就是说,当什么都没有发生时,它不会达到 100% 的 CPU 使用率(除非事件源被破坏)。

the glib documentation中有它的描述.

关于c++ - 在 C++ linux 中使用 glib.h 中的 GMainLoop 而不是 "while(true);"有什么优势?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27396382/

相关文章:

linux - 尝试根据特定准则将文件复制到新目录时陷入困境

C++ 和 Eclipse 项目 - 如何计算出要包含的 header 以及要转发声明的类

php - 如何从 web 服务器运行 php 脚本

c++ - 使用 cin 检查用户整数输入会产生无限循环

c - 嵌套调用会导致 C 中未初始化的参数?

c - C 中的变量意外更改

c - 为什么这段代码不退出?

python - 使用 pip 安装 Dynamic-DynamoDB 时出错

c++ - 在 C++ 中应该以什么顺序释放内存?

c++ - 我应该如何在 C++ 中转换 malloc 的结果?