1

pthread ID を取得するためのラッパー関数を実装するpthread_self()必要がありますが、これを行うシステムコールを検索して見つけられませんでした。Stack O から別の投稿を読んでいます。clone()スレッドの作成に使用されていることも知っています。またptrace()、syscall をトレースすることもできますが、手でトレースする前に...誰かがどの syscall であるかを知ることができますか?

4

4 に答える 4

1

syscall 0xe0, gettid()はどうですか?

gettid() は、呼び出し元のスレッド ID (TID) を返します。シングルスレッドプロセスでは、スレッド ID はプロセス ID (getpid(2) によって返される PID) と同じです。マルチスレッド プロセスでは、すべてのスレッドが同じ PID を持ちますが、各スレッドは一意の TID を持ちます。詳細については、clone(2) の CLONE_THREAD の説明を参照してください。

于 2013-10-13T21:06:59.573 に答える
1

glibc では、pthread_self()システム コールは実行されませんがstruct pthread、TSD セグメントにある へのポインタが返されます。

于 2013-10-14T13:31:16.913 に答える