0

なぜ2つの別々のIDがあり、win32 APIプログラミングを呼び出すとデータ構造にdwProcessId返さdwThreadIdれるのか興味がありますか?PROCESS_INFORMATIONCreateProcess

どのような場合に使用しdwThreadIdますか?これまでのところ、ユースケースは見つかりませんでした。プロセスIDは、を介して開始したプログラムを識別するためにのみ使用しますCreateProcess

また、Linuxにはpid(別名ProcessId)だけがあるのに、Windowsにはpidとthreadidの両方があるのはなぜですか?

4

2 に答える 2

1

すべてのプロセスには少なくとも1つのスレッドがあります。スレッドIDは、CreateProcessAPIによってプロセス用に作成された最初のスレッドのIDを提供します。より多くのスレッドを作成することができ、それらにもIDがあります。

プロセスIDがプロセス用であり、スレッドIDがスレッド用であるため、これらは分離されています。私はそれについて言うことはこれ以上ないと思います!

于 2012-10-06T12:43:48.023 に答える
0

どのプロセスにも少なくとも1つのスレッドがあるため、作成されたプロセスにはスレッドがあります。したがって、プロセスを作成すると、最初の実行スレッドも作成され、API関数によって両方が同時に取得されます。

特定のスレッドを検索する必要がある場合はスレッド識別子を使用し、呼び出された関数またはAPIがプロセスの識別子を期待する場合はプロセス識別子を使用します。両方を必要とするものに遭遇する可能性は低く、どちらの識別子をそこに渡すかについては疑問があります。

于 2012-10-06T12:43:38.497 に答える