假设在单线程应用中,我已创建了一个服务器和连接与像以下新的连接到达信号的槽,单线程应用QT时隙执行哪个线程
connect(mTcpServer, SIGNAL(newConnection()), this, SLOT(newClientConnected()));
和这条线我进入后一个巨大的循环,我做了一些计算。因此,我的单线程是主线程正在循环中忙碌,现在有新的连接到达。
所以我的问题是,
1) In which thread the new slot will be executed? I ask this because
main thread is already executing some code in a loop.
2) In which thread the event loop is maintained? Because certainly my single
thread is executing some code in a loop and is not maintaining the event loop.
我在QT :(
我不太明白这个问题:你说你有一个单线程应用程序。如在:只有一个线程。询问插槽执行的线程是奇怪的:只有一个线程,您已经知道插槽将执行的线程! –
@ KubaOber,我想不管事件循环总是在处理中。这就是为什么我很好奇,如果主线程不可用于处理那么谁是它。 – Tahlil
您需要提出一个更基本的问题:您为什么认为信号和时隙与事件循环有什么关系?在你的情况下,信号插槽连接**完全像**使用函数指针。插槽在信号的主体内被调用。当信号返回时(这只是一种方法,毕竟),插槽已被调用。没有任何事件循环出现。事件循环用于提供跨线程/排队插槽调用,但是你没有这样做。 –