我很好奇为什么有两个单独的 ID -当我在 win32 API 编程中调用时在数据结构dwProcessId
中dwThreadId
返回?PROCESS_INFORMATION
CreateProcess
在什么情况下我会使用dwThreadId
? 到目前为止,我还没有找到一个用例。我只使用进程 ID 来识别我通过CreateProcess
.
另外我很好奇为什么Linux只有一个pid
(又名ProcessId)而Windows既有pid又有threadid?
我很好奇为什么有两个单独的 ID -当我在 win32 API 编程中调用时在数据结构dwProcessId
中dwThreadId
返回?PROCESS_INFORMATION
CreateProcess
在什么情况下我会使用dwThreadId
? 到目前为止,我还没有找到一个用例。我只使用进程 ID 来识别我通过CreateProcess
.
另外我很好奇为什么Linux只有一个pid
(又名ProcessId)而Windows既有pid又有threadid?
Every process has at least one thread. The thread id gives you the id of the first thread created for a process by the CreateProcess API. You can create more threads and they'd have id's too.
They're separate only because process ids are for processes and thread ids are for threads. I don't think there's much more to say about it!
创建的进程有线程,因为任何进程都至少有一个线程。因此,创建一个进程您还创建了它的第一个执行线程,而 API 函数同时让您两者兼得。
当您需要查找某个线程时使用线程标识符,并且在您调用的函数或 API 期望进程标识符的地方使用进程标识符。您不太可能偶然发现任何需要两者的东西,并且您不确定要在那里提交哪个标识符。