qt的消息循环(弱智问题)
以前学过MFC将近1年,知道消息循环,但是没有去深究,最近刚看QT,也有消息循环,我才发现,对MFC的也是似是而非。
我实现的功能就是文字的左移动
timer-》start(40);
while(!isok);
执行到这里的时候,time对应的函数却进不去了。
因为消息循环阻塞在这里了,也就是说timer的时间到了后,会把timeout这个消息放到消息循环里,但是本身这个while的对应的消息还没处理完,所以timeout那个消息就不会有机会得到执行。(不知道理解对不);
但是我有几点迷惑:
1.我只有一个qweight对象,假如我调用完timer-》start后,没有while,而是又执行了很长的代码,是否也会因为阻塞了timeout这个消息,导致定时器不工作呢?(也就是必须某个消息完全处理完毕后,下个消息才有机会执行,包括timer,所以timer才不准时)。
2.我们在main函数最后,有个return app。exec(),说是这个就是执行的消息循环,处理我们比如鼠标 键盘的事件,那么刚才timer这些是否也在这个消息循环里呢?
3.线程问题,那么开了线程后,是否每个线程都有自己的消息循环(这话应该不对),线程是靠CPU调度的。
4.假如说第一点成立,那么说定时器这不很不准了,我开了定时器后,还得等我本身空闲后(也就是timer-》start往后的代码都执行完了),定时器才能响应,岂不太没有效率了?不如用线程了?起码没有这么多限制?
5.我看了说主线程跟从线程通信,会产生阻塞?不理解,我开个线程,共享一个全局变量,怎么就阻塞主线程的消息队列了呢?
比如
int b;
thread a;
a。run()
b还不能在run里面用了吗?不会吧?
问题有点弱智也有点多,请多多包涵
我run