QThread::currentThread () vs QObject::thread()



我正在寻找一个答案,如果这两个函数之间有任何差异,除了第一个的连续性:

QThread * QObject::thread() const
QThread * QThread::currentThread()

它们完全不同。

QThread * QObject::thread() const返回特定QObject所在的线程。

QThread * QThread::currentThread()返回一个指向QThread的指针,QThread管理当前正在执行的线程。

class MyClass : public QObject
{
};
int main(int argc, char **argv)
{
    QApplication app(argc, argv);
    MyClass * obj = new MyClass();
    QThread thread2;
    obj->moveToThread(&thread2);
    thread2.start();
    qDebug() << "The current thread is " << QThread::currentThread();
    qDebug() << "The thread2 address is " << &thread2;
    qDebug() << "The object is in thread " << obj->thread();
    return app.exec();
}
样本输出:

当前线程是QThread(0x1436b20)
线程2的地址是QThread(0x7fff29753a30)
对象在线程QThread(0x7fff29753a30)

它们做两件不同的事情。QThread::currentThread()是一个静态函数,它返回一个指针的线程,它被调用,即。当前线程。

QObject::thread()返回该对象所在线程的指针。

虽然它们可能返回相同的结果,但它们并不相同。

第一个返回QObject所在线程。

第二个返回当前正在执行的线程

最新更新