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

我碰到一个代码,他们需要一个无限循环,他们使用

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

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

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

在glib文档中有一个描述。