2009-06-05 3 views

risposta

16

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

+1

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

0

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.

-3

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

+0

Cosa potresti voler dire: http://doc.qt.nokia.com/4.7/qthread.html#currentThreadId – mbx

+4

-1 Poiché la domanda richiede in particolare come recuperare l'ID del thread in Qt. Qt supporta più piattaforme. –