C++ Qt库中的GUI线程检测
我需要知道我的函数运行在哪个线程的上下文中,是主GUI线程还是某个工作线程C++ Qt库中的GUI线程检测,c++,multithreading,qt,C++,Multithreading,Qt,我需要知道我的函数运行在哪个线程的上下文中,是主GUI线程还是某个工作线程 我无法使用简单的解决方案将QThread指针存储在主函数中,并将其与QThread::currentThread()进行比较,因为我正在编写一个库,并且无法访问主函数。当然,我可以创建InitMyLibary()函数,并要求库用户在GUI线程的上下文中调用它,但我确实反对这种做法。如果库中有Qt,则可以请求应用程序对象的线程。应用程序对象始终位于主gui线程中 void fooWorker() { const b
我无法使用简单的解决方案将QThread指针存储在主函数中,并将其与QThread::currentThread()进行比较,因为我正在编写一个库,并且无法访问主函数。当然,我可以创建InitMyLibary()函数,并要求库用户在GUI线程的上下文中调用它,但我确实反对这种做法。如果库中有Qt,则可以请求应用程序对象的线程。应用程序对象始终位于主gui线程中
void fooWorker()
{
const bool isGuiThread =
QThread::currentThread() == QCoreApplication::instance()->thread();
}
正确:QCoreApplication::instance()->thread()。我还要检查instance()==0。