• 5646阅读
  • 6回复

请问,信号和槽,我发了2天后突然槽不执行了 [复制链接]

上一主题 下一主题
离线riyue1108
 

只看楼主 倒序阅读 楼主  发表于: 2010-07-09
我信号和槽连接正常,程序运行了两天后,信号还是正常在发送,但是槽函数不执行了.

槽函数所在的线程工作是正常的. 请问各位大侠是什么原因呢?
离线xtfllbl

只看该作者 1楼 发表于: 2010-07-09
信号和槽还连接着么?会不会有什么情况下disconnect了?需要做一下稳定性测试
上海欢迎您
离线riyue1108

只看该作者 2楼 发表于: 2010-07-09
信号连接着的,也没有disconnect.

跟踪qt的源代码, 从 emit -> QMetaObject::activate -> queued_activate -> QCoreApplication::postEvent
posEvent的参数都是正确的. 但post以后 在我的qt_metacall没有收到信号了

posEvent函数里new了一个QMetaCallEvent对象,构造函数运行了,但是 析构函数没有运行!

跟踪posEvent,发现消息也已经进入了postEventList队列.再细跟不进去了.

谢谢版主驾临.希望上面的信息能提供些线索
离线xtfllbl

只看该作者 3楼 发表于: 2010-07-09
怎么看着感觉你那个槽函数没执行完的样子,所以后发的信号没响应。
上海欢迎您
离线riyue1108

只看该作者 4楼 发表于: 2010-07-09
如果槽函数没执行完,那么我那个线程就卡在槽函数里了.
但是我的那个线程能够正常响应,应该是底层出问题了.

重启后一切后恢复了,我现在加快了信号发送频率希望能再次模拟出那个现象来

请问版主大大,有好的测试办法吗?

再提供些线索:我的线程间的信号槽都失灵了,但是线程内的信号槽都正常
离线xtfllbl

只看该作者 5楼 发表于: 2010-07-09
回 4楼(riyue1108) 的帖子
线程间不推荐用slot/signal,主用事件。
http://www.qtcn.org/bbs/read.php?tid=13827&keyword=%CF%DF%B3%CC%7C%D0%C5%BA%C5
上海欢迎您
离线riyue1108

只看该作者 6楼 发表于: 2010-07-09
我确信我的线程都在正常运行,都能被调度到.

有槽的线程都没有阻塞住.
快速回复
限100 字节
 
上一个 下一个