2009-06-05 26 views

cevap

16

şu anda yürütme iş parçacığının iş parçacığı kimliği istiyorum (ve belirli bir QThread nesnenin değil iplik kimliği):

qDebug() << QThread::currentThreadId(); 

şeyler düşünmek: yöntemi (bir platforma özel id döndürür docs'u kontrol edin. Pencerelerde, bu kimliği bir sahte kimlik ve gerçek iş parçacığı kimliği döndürmediğinden Win32 API işlevleri ile kullanamazsınız.

Uygulamanız yalnızca Windows'ta çalışırsa ve iş parçacığı kimliği ile anlamlı bir şeyler yapmanız gerekiyorsa, GetCurrentThreadId() kullandıysanız muhtemelen en iyisi olacaktır.

+1

Bu hala doğru mu? currentThreadId() bir tanıtıcı döndürdüğünü görüyorum (http://qt-project.org/doc/qt-4.8/qthread.html#currentThread), Her çağrıldığında muhtemelen farklı olacak. QThread :: cur kullanmak istemez misiniz Bunun yerine, thread veri yapısına bir işaretçi olan rentThread()? –

0

Pencerelerde, uygulamalar normalde bunları çalıştırdığınızda komut satırından "detatch" yapar. Uygulamanız

eklerseniz, uygulamalarınız komut istemini engelleyecek ve qDebug ifadelerini yazdıracaktır. Bir QThread altta yatan uygulama PThreads olduğu

-3

, yürütülmesini parçacığının içinden

pthread_t = pthread_self(); 

(I "m kullanılabilir bir kimlik istediğiniz varsayılarak) kullanabilir.

değeri QThread döndü :: currentThreadId() taşınabilir değil

+0

Ne demek istediniz: http://doc.qt.nokia.com/4.7/qthread.html#currentThreadId – mbx

+4

-1 Soru, özellikle de Qt'deki thread ID'nin nasıl alınacağını sorduğundan. Qt çoklu platformları destekler. –