QObject的线程依附性(thread affinity)是指某个对象的生命周期依附的线程(该对象生存在该线程里)。我们在任何时间都可以通过调用QObject::thread()来查询线程依附性,它适用于构建在QThread对象构造函数的对象。
打印结果:
Debugging starts
mainThread QThread(0x3e2870)
thread QThread(0x3e2870)
Object QThread(0x3e2870)
run Thread(0x22ff1c)
aSlot QThread(0x3e2870)
aSlot called
我们知道跨线程的信号槽连接需要使用queued connection, 上述代码中QObject::connect(&thread, SIGNAL(aSignal()), &obj, SLOT(aSlot())); 虽然thread与obj的线程依附性相同,它们都隶属于 地址为0x3e2870的线程; 但是我们看到发射aSignal的线程
与之不同是0x22ff1c. 这就是为什么使用queued connection。
更多深入的讨论请参见我即将翻译完稿的文章 事件循环与线程二