2009-06-05 5 views

Répondre

16

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().

+1

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? –

0

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.

-3

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

+0

Ce que vous pourriez avoir voulu dire: http://doc.qt.nokia.com/4.7/qthread.html#currentThreadId – mbx

+4

-1 Depuis la question demande spécifiquement comment récupérer l'ID de thread dans Qt. Qt prend en charge plusieurs plates-formes. –