qt信号多线程
当你connect的时候,类型为Qt::AutoConnection就好了(如果slot在同一线程就是直接调用,如果slot在另外一个线程就通过事件机制处理)
在Qt中,你的线程在调用exec函数后就进入了事件循环机制
这时,如果另外一个线程发送了一个信号过来
1)如果接收线程正在执行一段代码,会在这段代码执行完成后,进入事件循环,然后调用相应slot来消耗这个signal事件
2)如果这时接收线程已经在事件循环中等待,就直接调用相应slot来消耗这个signal事件
线程A:
ThreadA:run()
{
A();
exec(); // 开始事件循环,调用相应的slot来消耗接收到的信号
}
当你connect的时候,类型为Qt::AutoConnection就好了(如果slot在同一线程就是直接调用,如果slot在另外一个线程就通过事件机制处理)
在Qt中,你的线程在调用exec函数后就进入了事件循环机制
这时,如果另外一个线程发送了一个信号过来
1)如果接收线程正在执行一段代码,会在这段代码执行完成后,进入事件循环,然后调用相应slot来消耗这个signal事件
2)如果这时接收线程已经在事件循环中等待,就直接调用相应slot来消耗这个signal事件
线程A:
ThreadA:run()
{
A();
exec(); // 开始事件循环,调用相应的slot来消耗接收到的信号
}