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

mkk*_*wat 3 c c++ linux glib

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

    GMainLoop *mainloop = NULL;

    mainloop = g_main_loop_new (NULL, FALSE);
    g_main_loop_run (mainloop);
Run Code Online (Sandbox Code Playgroud)

我怀疑他们为什么不while(true);用于同一目的.GMainLoop内部做了什么,是不是内部相同.如何GMainLoop 提高性能.

Win*_*ute 6

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

glib文档中有它的描述.