GNU/Linux >> Linux の 問題 >  >> Linux

マルチスレッド プロセスのスレッド ID を、実行中の別のプロセスのプロセス ID と同じにすることはできますか?

pthreads のマニュアル ページによると、スレッド ID は作成プロセス内で一意であるため、別のスレッドまたはプロセスが同じ ID を持つ可能性があります。ただし、プロセス内で一意であり、プロセス ID がシステム内で一意である場合は、2 つの組み合わせを一意の識別子として使用できます。

<ブロック引用>

プロセス内の各スレッドには、一意のスレッド識別子 (タイプ pthread_t に格納) があります。この識別子は pthread_create(3) の呼び出し元に返され、スレッドは pthread_self(3) を使用して独自のスレッド識別子を取得できます。 スレッド ID は、プロセス内で一意であることが保証されているだけです。


TID (sys_gettid() によって返される) システム コール) は、システム上のすべてのスレッドで一意であり、シングルスレッド プロセスの場合、PID と TID は等しくなります。これは、TID が別のプロセスからの PID と競合しないことを意味します。


pthread ID は一意ではない可能性がありますが、スレッドがタスクにマップされる実装では、タスク ID (/proc/PID/task に表示される) は実際にはシステム全体で一意であり、実際の PID に似た形式になります。


Linux
  1. Linux –タスクセットとの実行中のプロセスアフィニティの設定が失敗しますか?

  2. 別のBashセッションで実行中のプロセスの出力を表示する方法は?

  3. GDB を使用して実行中のプロセスをデバッグできますか?

  1. スレッドが実行されている CPU コアを確認するにはどうすればよいですか?

  2. プロセスが死なない限り、プロセス PID は同じままであることが保証されていますか?

  3. 実行中のプロセスの GID をプログラムで取得する方法

  1. 実行中のプロセスの出力リダイレクトを変更するにはどうすればよいですか?

  2. init プロセスを Linux のシェル スクリプトにすることはできますか?

  3. 実行可能ファイルと同じディレクトリに .so が見つかりませんか?