8

マルチプロセス環境でスレッドを一意に識別する方法を見つけようとしています。接続しているさまざまなプロセスを追跡するサーバーがあります。その中にはマルチスレッドのものとそうでないものがあります。マルチスレッド接続からスレッドを識別するために、スレッド ID を一意の識別子として使用しています (常に最大 1 つのマルチスレッド プロセスが接続されます)。私の質問は、これらのスレッドのいずれかのスレッド ID が、システムで実行されている別のプロセスのプロセス ID と同じである可能性はありますか?

助けてくれてありがとう!

4

5 に答える 5

11

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


1. PID 名前空間が使用されている場合、TID と PID は同じ PID 名前空間内でのみ一意であることに注意してください。

于 2013-01-03T10:52:37.397 に答える
2

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

于 2013-01-02T17:48:12.483 に答える
0
pthread_equal(id1,id2)

2 つのスレッドの ID を比較し、同じ場合は 0 を返し、異なる場合はゼロ以外の数値を返します。

于 2014-05-19T18:22:18.687 に答える