|
|
1
6
Qt基于事件队列。每个Qt线程都有自己的队列和相关的事件循环。因此,当您遇到这样一种情况:有两个不同的对象存在于两个不同的线程中,其中一个通过信号/插槽机制(通过自动或排队连接)连接到另一个线程时,在发射过程中会发生以下情况:信号中的代码创建一个事件并将其发送到对象接收器的队列。接收器的事件循环在队列中运行,找到发布的事件并执行适当的槽。
队列保证是线程安全的,因此跨线程发出信号是绝对安全的。你问题中的引语是关于你做出决定的情况
直接呼叫
关于居住的物体
有一篇关于线程、qobject、信号、插槽以及所有内容如何相互关联的文章: Threads Events QObjects 关于有问题的代码。您有一个排队连接,这意味着发送方和接收方是在一个线程中还是在不同的线程中并不重要。发送方和接收方是两个对象还是同一个对象并不重要。上述程序将是相同的。如果你创建了一个自动连接,那么它将有一个直接呼叫,但你没有。和一个相关的报价从 documentation :
|
|
|
2
1
因此,您应该从threadone发出一个信号,并在threadtow中连接它(接收它),并根据信号类型执行一些线程代码 如果您试图直接执行代码,您将得到这个错误
|
|
|
user107586 · 如何处理等待句柄不会导致无限循环? 9 月前 |
|
|
ron burgundy · 获取-释放语义是否跨线程传递?[副本] 9 月前 |
|
|
BenjiFB · C#内存缓存:在一次操作中追加到列表? 10 月前 |
|
|
András Takács · Python多线程问题 1 年前 |
|
|
András Takács · Python多线程错误 1 年前 |