2011-08-12 7 views
0

RW documentationでは、rwThreadHashを使用してデバッグ用のthreadIdを取得することを推奨しますが、それでもスレッド上の実際のLinuxスレッドIDとは一致しません。どのようにそれを(どのようにポータブルな方法で必ずしも)取得するための任意のアイデア?RWThreadIdからlinuxのスレッドIDを取得するには?

cout << rwThreadHash(threadId()) << endl; 
1477159840 

答えて

0

私はあなたがpthread_self() man page Notesからgettid()

を探していると思う:pthread_self()によって返されたスレッドIDは、gettidの呼び出し(2)によって返されたカーネルスレッドIDと同じものではありません。あなたが印刷しているものは、pthread idのように見えます。

+0

私はpthread呼び出しを使用して*現在のtidを取得できることは知っていますが、問題は、実際に管理しているスレッドのRWThreadIdを返すライブラリを使用しているためです私はスレッドIDの1つのタイプから通常のLinuxベースのものに変換しようとしています。 – naumcho

+0

pthread idとカーネルスレッドIDは、2つの異なるエンティティです。あなたは前者にアクセスしているように見えますが、前者にアクセスしたいと思っています。おそらくRogueWaveはスレッドで実行される関数/メソッドを指定する何らかの方法を提供します。そのメソッドにgettid()を入れて、カーネルIDを返すか、少なくともそれをログに表示する必要があります。スレッドが変更できないライブラリコードを実行していると言っている場合は、実際にSOLかもしれません。 – Duck

関連する問題