Je cherche une réponse s'il y a une différence entre ces deux fonctions, en dehors de la constness du premier:QThread :: currentThread() vs QObject :: fil()
QThread * QObject::thread() const
QThread * QThread::currentThread()
Je cherche une réponse s'il y a une différence entre ces deux fonctions, en dehors de la constness du premier:QThread :: currentThread() vs QObject :: fil()
QThread * QObject::thread() const
QThread * QThread::currentThread()
Ils sont tout à fait différents.
QThread * QObject::thread() const
renvoie le fil dans lequel vit un QObject
particulier.
QThread * QThread::currentThread()
Renvoie un pointeur vers un QThread qui gère le thread en cours d'exécution.
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();
}
sortie de l'échantillon:
Le fil actuel est QThread (0x1436b20)
L'adresse thread2 est QThread (0x7fff29753a30)
l'objet est en fil QThread (0x7fff29753a30)
Ils sont pas la même chose, bien qu'ils pourraient retourner le même résultat.
1er retourne un fil que le QObject vit.
2ème retourne le fil en cours d'exécution.
Ils font deux choses différentes. QThread::currentThread()
est une fonction statique qui renvoie un pointeur vers le thread dont il est appelé, c'est-à-dire. fil actuel.
QObject::thread()
renvoie un pointeur sur le fil dans lequel cet objet vit.