- 主题:请教:qthread里这句话。
还有这句,new slots should not be implemented directly into a subclassed thread。
啥意思? 着重点是在directly? 是说要注意同步问题?
。
【 在 hgoldfish 的大作中提到: 】
: 这个跟 qt 的 signal/slot 的事件循环和 QueuedConnection 有关。
:
: 现代 qt 编程,别去管这事了。统一用 QtConcurrent 吧。
: ...................
--
FROM 124.64.17.*
没什么歧义吧,要是按照一般方法调用,那就是运行在调用者的线程中。
【 在 zhanghaoX 的大作中提到: 】
: 你看第二段括号里的话。
:
--
FROM 123.123.134.*
moveToThread(QThread*)后,如果是queued connected signal/slot,或者设置为QueuedConnection用QMetaObject::invokeMethod调用,worker中的slots都是在QThread::run中的线程内的。
【 在 zhanghaoX 的大作中提到: 】
: 还一个问题,模型一,work假如有两个slot,movetothread,run起来后,两个slots在一个线程执行,还是两个,还是别的情形,?
:
: 。
--
FROM 123.123.134.*
如果已经subclass QThread并且override QThread::run了,就不要再用signal/slot去做跨线程调用了。QThread::run中运行了一个消息循环,override后不做特殊处理的话,QThread就无法响应signal了。
“
In that example, the thread will exit after the run function has returned. There will not be any event loop running in the thread unless you call exec().
”
【 在 zhanghaoX 的大作中提到: 】
: 还有这句,new slots should not be implemented directly into a subclassed thread。
:
: 啥意思? 着重点是在directly? 是说要注意同步问题?
: ...................
--
FROM 123.123.134.*
你说的第二种执行方式是咋弄?
我这里实验了下,模型一,worker两个slots,controller发送的哪个信号在前,哪个slot执行,应该就是第二个信号插不进线程的loop中去了?
还是就是一个线程不能够有两个线程函数,所以就没把第二个slot编译为线程函数?
【 在 zhcon 的大作中提到: 】
: moveToThread(QThread*)后,如果是queued connected signal/slot,或者设置为QueuedConnection用QMetaObject::invokeMethod调用,worker中的slots都是在QThread::run中的线程内的。
:
: 【 在 zhanghaoX 的大作中提到: 】
: ...................
--
修改:zhanghaoX FROM 124.64.17.*
FROM 124.64.17.*
什么叫一般方法调用?
。
【 在 zhcon 的大作中提到: 】
: 没什么歧义吧,要是按照一般方法调用,那就是运行在调用者的线程中。
:
: 【 在 zhanghaoX 的大作中提到: 】
: ...................
--
FROM 124.64.17.*
一般方法就是指instance.method()这种,Qt里面跨线程调用需要用queued signal/slot或者QMetaMethod::invoke(QueuedConnection)。
【 在 zhanghaoX 的大作中提到: 】
: 什么叫一般方法调用?
: 。
--
FROM 123.123.134.*
queue signal/slot 和 queue connection 不是一回事?
【 在 zhcon 的大作中提到: 】
: 一般方法就是指instance.method()这种,Qt里面跨线程调用需要用queued signal/slot或者QMetaMethod::invoke(QueuedConnection)。
:
: 【 在 zhanghaoX 的大作中提到: 】
: ...................
--
FROM 124.64.17.*
是一回事,这个相当于发送一个消息到其他线程,目标线程会从消息队列挨个取出来执行对应的slot
【 在 zhanghaoX 的大作中提到: 】
: queue signal/slot 和 queue connection 不是一回事?
--
FROM 123.123.134.*
模型1的worker的两个slot 怎么解?
【 在 zhcon 的大作中提到: 】
: 是一回事,这个相当于发送一个消息到其他线程,目标线程会从消息队列挨个取出来执行对应的slot
:
:
: ...................
--
FROM 124.64.17.*