首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >等待加载dll中的线程在windows中完成

等待加载dll中的线程在windows中完成
EN

Stack Overflow用户
提问于 2013-07-30 11:43:20
回答 2查看 1.2K关注 0票数 0

我有一个线程运行在动态链接在我的主应用程序中的dll中。有没有一种方法可以在不知道线程句柄的情况下等待.exe中的所有线程(包括加载的dll)?Windows 7 x64,vc++线程是一个对某个文件进行某些处理的函数,它不会返回任何东西,它工作于在线程完成的某些阶段被修改的全局类。线程函数调用其他函数。我想等到函数的最后一行被执行。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-30 11:48:07

我自己从来没做过,但你很可能

  1. 使用CreateToolhelp32Snapshot创建快照
  2. 然后使用Thread32FirstThread32Next枚举线程。
  3. 对于每个线程ID,使用OpenThread提供一个句柄。确保您使用SYNCHRONIZE特权打开线程,以便您最终能够
  4. 将所有线程句柄传递给WaitForMultipleObjects,等待所有线程句柄终止。
票数 2
EN

Stack Overflow用户

发布于 2013-08-08 03:28:54

另一种解决方案,假设您只想停止main()函数的运行,而不是在任何其他线程完成之前退出进程,则调用

代码语言:javascript
复制
ExitThread(GetCurrentThread());

从main()。如果您没有显式地调用ExitProcess,或者通过从main()返回,直到最后一个线程退出,Windows才会退出。

请注意,无论您如何处理,这样做都有一个主要问题:如果您使用的Windows之一启动了一个不会退出的线程,那么您的应用程序也不会退出。

正确的解决方案是DLL本身包含一个关机函数,该函数在必要时等待自己的线程退出。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17946118

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档