转载:https://blog.youkuaiyun.com/acs713/article/details/7641592
1.关系:GMainLoop -> GMainContext -> {GSource1, GSource2, GSource3......}->watch(iOChannel)
- 创建GMainLoop使用函数g_main_loop_new, 它的第一个参数就是需要关联的GMainContext,如果这个值为空,程序会分配一个默认的Context给GMainLoop。把GSource加到GMainContext呢,则使用函数g_source_attach
- g_main_loop_new创建一个main loop对象,一个main loop对象只能被一个线程使用,但一个线程可以有多个main loop对象。
-
GMainLoop的主要部件是GMainContext,GMainContext可以在多个GMainLoop间共享,但要求这些GMainLoop都在同一个线程中运行,前面提到的模态对话框就属于这一类。GMainContext通常由多个GSource组成,GSource是事件源的抽象,任何事件源,只要实现GSource规定的接口,都可以挂到GMainContext中来。
2.资源用完,立马unref