Comment imprimer l'ID de thread en utilisant qDebug()
sur l'environnement Windows de Qt
.ID de thread dans Qt
Répondre
Je suppose que vous voulez l'ID de fil du fil en cours d'exécution (et non l'identifiant de fil d'un objet QThread spécifique):
qDebug() << QThread::currentThreadId();
choses à considérer: La méthode retourne une plate-forme id spécifique (vérifiez le docs). Dans Windows, vous ne pouvez pas utiliser cet ID avec les fonctions de l'API Win32, car il renvoie un pseudo-ID et non l'identifiant réel du thread.
Si votre application s'exécute uniquement sous Windows et que vous avez besoin de faire quelque chose de significatif avec l'ID de thread, il serait probablement préférable d'utiliser GetCurrentThreadId().
Sous Windows, les applications se "détachent" normalement de la ligne de commande lorsque vous les exécutez. Si vous ajoutez
win32:CONFIG+=console
vos applications bloquent l'invite de commande et impriment les instructions qDebug.
Depuis une implémentation sous-jacente de QThread est pthreads, vous pouvez utiliser (I "m en supposant que vous voulez un ID utilisable)
pthread_t = pthread_self();
à partir du fil qui est en cours d'exécution.
La valeur retournée par QThread :: currentThreadId() n'est pas portable
Ce que vous pourriez avoir voulu dire: http://doc.qt.nokia.com/4.7/qthread.html#currentThreadId – mbx
-1 Depuis la question demande spécifiquement comment récupérer l'ID de thread dans Qt. Qt prend en charge plusieurs plates-formes. –
Est-ce encore correct? Je vois que currentThreadId() retourne un handle (http://qt-project.org/doc/qt-4.8/qthread.html#currentThread), qui sera vraisemblablement différent à chaque fois qu'il est appelé Voulez-vous pas utiliser QThread :: cur rentThread() à la place, qui est un pointeur vers la structure de données de thread? –