我有两个信号 A 和 B 从线程 X 中的一个对象依次发出,并且两个连接的插槽位于主线程中。连接是 QueuedConnection(由于多线程连接)。我的问题是:在调用插槽时是否尊重信号的顺序,或者是否有机会以任意顺序执行它们?
问问题
3488 次
2 回答
7
您的两个信号都将在 X 线程的单个事件队列中排队,因此相应的插槽将按照信号发出的顺序执行。
但在以下情况下,您不能依赖插槽执行顺序:
signal A connected to a slot in X thread
signal B connected to a slot in Y thread
此外,还有一种Qt::BlockingQueuedConnection
连接类型。如果您使用它连接第一个信号,则当前线程将被阻塞,直到另一个线程中的相应插槽完成其工作。
于 2013-04-24T10:24:11.130 回答
5
根据当前的 QT 源 (5.*),它们将按照使用 FIFO 算法发出的顺序进行调度。但正如评论中所述,文档中没有任何内容指定此顺序,因此我不建议转发该行为。
于 2013-04-24T10:23:22.260 回答