我正在尝试查找是否有更好的方法来查找属于当前进程的所有线程 ID。看起来使用带有 TH32CS_SNAPTHREAD 的 CreateToolhelp32Snapshot 并迭代线程以检查线程的进程 id 是否等于当前进程 id,这是一种解决方案,但我想避免迭代所有正在运行的线程。我只想遍历属于给定进程的线程。如果有快速简单的 API,请告诉我。我需要用 C++ 来做。
谢谢,阿比奈。
我正在尝试查找是否有更好的方法来查找属于当前进程的所有线程 ID。看起来使用带有 TH32CS_SNAPTHREAD 的 CreateToolhelp32Snapshot 并迭代线程以检查线程的进程 id 是否等于当前进程 id,这是一种解决方案,但我想避免迭代所有正在运行的线程。我只想遍历属于给定进程的线程。如果有快速简单的 API,请告诉我。我需要用 C++ 来做。
谢谢,阿比奈。
如果“当前进程”是您编写的,您可以利用这样一个事实,即在任何时候添加或终止线程时都会调用 DllMain 函数,原因代码为 DLL_THREAD_ATTACH 和 DLL_THREAD_DETACH。然后保留自己的列表很简单。
使用带有 TH32CS_SNAPPROCESS (0x00000002) 的 CreateToolhelp32Snapshot 后,您可以使用Thread32First 函数获取线程。
示例代码在这里。