gpt4 book ai didi

c++ - 获取特定进程的线程句柄/id

转载 作者:行者123 更新时间:2023-11-30 01:48:01 25 4
gpt4 key购买 nike

我有一个多线程嵌入式架构,其中包含 6 个特定于应用程序的进程,这些进程在执行初始化进程时执行。同样,每个线程都有自己的运行线程数。

我想做的是根据设备是否连接到 pc 暂停 1 个特定进程的运行线程。

我尝试四处搜索,发现最接近我要找的是:How to obtain list of thread handles from a win32 process?

但是,该代码返回所有正在运行的线程的列表。这对我不起作用,因为我试图暂停所有获得的线程,假设它们是从同一个进程获得的,因此我不检查它们属于哪个进程。

同样,我正在获取另一个进程中一个进程的运行线程列表。

Windows 中是否存在允许此类控制的现有方法,或者我是否必须确定我需要从整个列表中暂停哪些线程?

最佳答案

与其尝试强制挂起线程(当您在“不太幸运的时刻”挂起时,这可能会给您带来麻烦),您宁愿使用具有手动重置功能的命名 CreateEvent()

  • 命名事件很容易在进程之间共享。您只需使用相同的名称再次 CreateEvent() 即可。事件的典型名称是 MyCompany_MyProduct_MyFeature_EventName 以防止意外碰撞。
  • 当您在“设置”事件上WaitForSingleObject() 时,等待会立即得到满足。
  • 当您等待“重置”事件时,等待会暂停您的线程,直到事件被设置。
  • 您的第一个应用程序将让其线程在不执行任何工作时等待事件,因此可以安全地挂起。
  • 您将设置和重置第二个应用程序的事件以控制第一个应用程序。
  • 这样,您就不需要枚举线程,而且更加健壮。

关于c++ - 获取特定进程的线程句柄/id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30741631/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com