又写bug呢 2022-07-30 11:35
浏览 63
已结题

QT子线程通过循环向主线程发送打印的信息,为什么主线程最后才集中的打印,而不是每循环一次打印一次呢?

第一次使用QT,用QT写页面置换算法时,我想的是子线程每次循环向主线程发送打印的信息,主线程将信息打印出来,但是经过测试发现,主线程都是在子线程循环完毕后,才将消息集中的打印出来,而不是每经过一次循环发送消息打印一次,是什么原因造成的啊,子线程和主线程是通过信号槽发送信号的
测试结果如下图

img

  • 写回答

1条回答 默认 最新

  • 又写bug呢 2022-07-30 15:45
    关注

    补充:我知道了,在connect函数里,第五个参数默认为Qt::AutoConnection ,如果接收者和发送者不在同一个线程,会自动使用Qt::QueuedConnection,而这个类型,在发送信号后,槽函数不会立刻被调用,等到接收者当前函数执行完,进入事件循环之后,槽函数才会被调用。将第五个参数改为Qt::BlockingQueuedConnection就可以解决,这个类型发送者在发送完信号后,线程会阻塞,等待槽函数执行完毕。

    评论

报告相同问题?

问题事件

  • 系统已结题 8月7日
  • 创建了问题 7月30日