Come stampare l'ID del thread utilizzando qDebug()
in ambiente Windows di Qt
.ID thread in Qt
risposta
sto supponendo che si desidera solo l'ID del thread attualmente in esecuzione (e non solo l'ID di un oggetto QThread specifico):
qDebug() << QThread::currentThreadId();
cose da considerare: il metodo restituisce un ID specifico piattaforma (controllare lo docs). In Windows non è possibile utilizzare questo ID con le funzioni API di Win32 poiché restituisce uno pseudo id e non l'ID reale del thread.
Se l'applicazione verrà eseguita solo in Windows e sarà necessario fare qualcosa di significativo con l'id del thread, probabilmente sarebbe meglio se si utilizzasse GetCurrentThreadId().
Su Windows, le applicazioni normalmente si "staccano" dalla riga di comando quando vengono eseguite. Se aggiungi
win32:CONFIG+=console
le applicazioni bloccheranno il prompt dei comandi e stamperanno le istruzioni qDebug.
Dal implementazione sottostante di un QThread è pthreads, è possibile utilizzare (I "m supponendo che si desidera un ID utilizzabile)
pthread_t = pthread_self();
dall'interno del filo che sta eseguendo.
Il valore restituito da QThread :: currentThreadId() non è portatile
Cosa potresti voler dire: http://doc.qt.nokia.com/4.7/qthread.html#currentThreadId – mbx
-1 Poiché la domanda richiede in particolare come recuperare l'ID del thread in Qt. Qt supporta più piattaforme. –
È ancora corretto? Vedo che currentThreadId() restituisce un handle (http://qt-project.org/doc/qt-4.8/qthread.html#currentThread), che presumibilmente sarà diverso ogni volta che viene invocato. Non vorresti usare QThread :: cur rentThread() invece, che è un puntatore alla struttura dei dati del thread? –