详细介绍Glib 主事件循环轻度分析与编程应用

发布时间 2023-04-04 13:30:42作者: lydstory

glib 是一个跨平台、用 C 语言编写的若干底层库的集合。编写案例最好能够结合 glib 源码,方便随时查看相关函数定义。glib 实现了完整的事件循环分发机制。有一个主循环负责处理各种事件。事件通过事件源描述,常见的事件源

文件描述符(文件、管道和 socket)
超时
idle 事件
当然,也可以自定义事件源,通过 glib 提供的函数 g_source_attach() 就可以手动添加我们自定义的新类型事件源。可参考 [2.2](##2.2 案例2 glib 自定义事件源)

事件源默认会被分配一个优先级,默认为 G_PRIORITY_DEFAULT(200),数字越小,优先级越高。当然也可以在添加空闲函数(g_idle_add_full)的时候,指定该事件源的优先级。具体应用还是结合后面的示例以及源码动手实践。

1.1 glib 主事件循环涉及的重要数据结构
GMainContext

为了让多组独立事件源能够在不同的线程中被处理,每个事件源都会关联一个GMainContext。一个线程只能运行一个GMainContext,但是
————————————————
版权声明:本文为CSDN博主「极致Linux内核」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_73494896/article/details/127011228