首页| 论坛| 消息
主题:Qt的多线程是不是不能使用QTimer
回帖:看Qt手册的话,很少有函数标称是 threadsafe 的,但 postEvent() 是线程安全的:
void QCoreApplication::postEvent(QObject *receiver, QEvent *event, int priority = Qt::NormalEventPriority)
....
Note: This function is thread-safe
这一函数,方便了我们在多线程之间传递数据(通过事件队列),而不需要手动加锁。
QueuedConnection信号槽 其实也是通过这一个函数的将 信号封装成一个对象,进而传递到目标线程的事件队列的。目标线程的事件循环发现收到对象后,将其作为函数和函数参数进行调用。
不用这一机制,也没什么错,无非Qt不保证线程安全,和常规多线程一样,自己手动加锁就好了。
下一楼›:yanwuyue:继承的不要带this,直接qtimer(),并且实例化的k也只能在run里面使用或者信号控制 ( ..
‹上一楼:angelus:我有点糊涂,你要求跨线程,不是应该用 Qt::QueuedConnection 吗?
Qt::DirectConne ..

查看全部回帖(34)
«返回主帖