2009-06-05 18 views

答えて

16

私はあなたが現在実行中のスレッド(およびない特定のQThreadオブジェクトのスレッドID)のスレッドIDをしたいと仮定しています:考慮すべき

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

物事は:メソッドは、(プラットフォーム固有のIDを返しますdocsを確認してください)。ウインドウでは、このIDをWin32 API関数で使用することはできません。実際のスレッドIDではなく擬似IDを返すためです。

アプリケーションがWindowsでのみ実行され、スレッドIDでわかりやすいものを実行する必要がある場合は、GetCurrentThreadId()を使用した方が最適でしょう。

+1

これは正しいですか?currentThreadId()はハンドルを返します(http://qt-project.org/doc/qt-4.8/qthread.html#currentThread)。おそらくそれが呼び出されるたびに異なるでしょう。あなたはQThread :: cur代わりにrentThread()、スレッドのデータ構造へのポインタですか? –

0

通常、アプリケーションは実行時にコマンドラインから「デタッチ」されます。追加すると、アプリケーションはコマンドプロンプトをブロックし、qDebugステートメントを表示します。

win32:CONFIG+=console 

実行しているスレッド内から

-3

QThreadの実装がpthreadsのですので、あなたは(あなたが使用可能なIDをしたいと仮定I "m)を使用することができます

pthread_t = pthread_self(); 

QThreadから返された値:: currentThreadId()は移植性がありません。

+0

あなたが意味するもの:http://doc.qt.nokia.com/4.7/qthread.html#currentThreadId – mbx

+4

-1 QtでスレッドIDを取得する方法を質問するので、 Qtは複数のプラットフォームをサポートしています。 –

関連する問題