QT 源码分析 - exec 函数

目录

一、exec() 简介:

二、QDialog::exec()

三、QCoreApplication::exec()

四、QEventLoop 的 exec()


一、exec() 简介:

1、说明:

事件循环,首先是一个无限 “循环”

程序在 exec() 里面无限循环,能让跟在 exec() 后面的代码得不到运行机会,直至程序从 exec() 跳出

其次,之所以被称为“事件”循环,是因为它能接收事件,并处理之。

当事件太多而不能马上处理完的时候,待处理事件被放在一个“队列”里,称为“事件循环队列”。

当事件循环处理完一个事件后,就从“事件循环队列”中取出下一个事件处理之。

当事件循环队列为空的时候,它和一个啥事也不做的永真循环有点类似,但是和永真循环不同的是,事件循环不会大量占用 CPU 资源。

事件循环的本质就是以队列的方式再次分配线程时间片

嵌套

一个线程 可拥有 多个 事件循环

但,事件循环必须是嵌套的,一层套一层

子层的事件循环执行 exec() 的时候,父层事件循环就处于中断状态;即:只有当前 QEventLoop 被激活

虽然父层中断,父层 GUI 界面处理不会卡住如下一段解释

当子层事件循环跳出 exec() 后,父层事件循环才能继续循环下去<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值