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

时间:2014-12-10 08:32:15

标签: c++ c linux glib

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

    GMainLoop *mainloop = NULL;

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

我怀疑他们为什么不将while(true);用于同一目的。 GMainLoop内部做了什么,Ain在内部将是相同的。 GMainLoop如何提高效果。

1 个答案:

答案 0 :(得分:5)

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

the glib documentation中有对它的描述。