qemu2事件处理机制

前边分析了glib的主事件循环,在分析qemu事件派发机制之前,我们来回顾下glib事件循环的主要api和流程。
主事件循环提供的机制主要有两方面
1 观察文件描述符事件, 如文件可读,文件可写
2 定时任务

主事件循环有三个概念
1 GMainContext 
2 GMainLooper
3 GSource

GMainLooper代表一个事件循环,和线程绑定,其中成员变量is_running用于控制主事件循状态(开启/停止), GMainContext则代表主事件循环的上下文,与GMainLooper绑定,GMainContext和GMLooper为一对一的关系,同样GMainLooper和线程也是一对一的关系。
GSource则代表一个事件源,一个GMainContext可以绑定多个事件源.
如何理解事件源?
前面说了主事件循环主要用于观察文件描述符可读,可写事件。这就是事件源,另外定时任务的时间到达也属于一种特殊的事件源。

glib主事件循环以什么方式观察文件描述符可读可写,相信对linux编程比较熟悉的读者都应该猜想到了,无非就是poll/select/epoll等函数。

这些函数都可以把文件描述符设置到一个集合里面,设置感兴趣的事件,之后调用poll/select/epoll函数,然后进入休眠。当内核发现感兴趣的事件(读、写等)到来后,就会从休眠中唤醒poll/select/epoll的调用进程,同时内核会把触发的事件也告诉给调用者。这种方式比read/write等阻塞方式的好

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TangGeeA

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值