Qt库中的GUI线程检测

时间:2009-06-10 19:25:48

标签: c++ multithreading qt

我需要知道我的函数运行在哪个线程的上下文中,是主GUI线程还是某个工作线程。

我无法使用简单的解决方案将QThread指针存储在main函数中并将其与QThread :: currentThread()进行比较,因为我正在编写库而我无法访问main函数。我当然可以创建InitMyLibary()函数并要求库用户在GUI线程的上下文中调用它,但我真的对此。

1 个答案:

答案 0 :(得分:26)

如果你在lib中有Qt,你可以要求申请对象的线程。应用程序对象总是生活在主要的gui线程中。

void fooWorker()
{
    const bool isGuiThread = 
        QThread::currentThread() == QCoreApplication::instance()->thread();

}