2015-10-22 2 views

ответ

6

Они сильно отличаются.

QThread * QObject::thread() const возвращает нить, в которой живет конкретный QObject.

QThread * QThread::currentThread() Возвращает указатель на 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)
Адрес thread2 является QThread (0x7fff29753a30)
Объект находится в потоке QThread (0x7fff29753a30)

1

Они не то же самое, хотя они могут вернуть тот же результат.

первый один возвращает поток, что QObject живет.

второй один возвращает исполняемую в данный момент поток.

4

Они делают две разные вещи. QThread::currentThread() - статическая функция, возвращающая указатель на поток, из которого он вызван, т.е. текущая нить.

QObject::thread() возвращает указатель на поток, в котором этот объект живет.

Смежные вопросы