我有一些代码,我最初并没有创建使用_beginthreadex和_endthreadex。出于某种原因,当它调用_endthreadex(0)时,调用只会挂起而不会返回。关于通常会导致此呼叫挂起的任何想法?_endthreadex(0)挂起
2
A
回答
4
_endthreadex结束线程,所以它不能返回。这就是调用它的关键。
编辑:调用_endthreadex有点不寻常,通常你只是让线程启动过程返回并且运行时为你调用_endthreadex。您可能需要更多地解释一下,在我们提供帮助之前,您正在尝试做什么。
0
好....好,endthreadex获取通过“删除Children子” ......和析构函数调用不会返回......所以整个事情挂我的课的解构所谓
1
你误打电话_endthreadex()尝试从主线程结束一个线程?
函数_endthreadex()是为了在要终止的线程中调用,以报告返回值,并为适当的“为线程分配的资源恢复”进行调用。你不需要在主线程的析构函数中调用它。您可以在析构函数中通过一个事件(参见SetEvent,从主线程调用)向线程发出信号,表示线程应尽快退出,然后以最后一条语句退出的线程将调用_endthreadex()。
在你的主线程中调用_endthreadex()会导致进程挂起,因为你已经终止了你的主线程,但是你仍然有你想要终止的原始线程仍在运行。
8
我的回答太晚了,但仍有人会使用它。
在我的情况下,_endthreadex在我卸载dll并删除了一些全局对象时被绞死。全局对象之一有另一个线程内部,该线程也执行线程退出。由于DLLMain已经锁定了crt内存映射,所以造成了死锁。阅读DLLMain帮助,并发现在DLLMain调用期间不允许对另一线程或进程执行任何其他操作。
相关问题
- 1. Boost Thread挂在_endthreadex
- 2. pod挂起挂起状态
- 3. 当从UI调用到System.Threading.Thread时,挂起挂起挂起
- 4. AWK在Chunking挂起时挂起
- 5. 从Silverlight挂起的WCF呼叫挂起
- 6. 尝试使用scriptData时,UPLOADIFY加载器挂起0%
- 7. php的参数或者set_time_limit(0)挂起并抛出HTTP 500
- 8. InvokeRequired挂起
- 9. Solr DataImport挂起
- 10. 查询挂起
- 11. python popen.stdout.readline()挂起
- 12. 的JdbcTemplate挂起
- 13. datasnap TSocketconnection挂起
- 14. Process.spawn挂起
- 15. Remove-SPServiceApplication挂起
- 16. SqlConnection.open挂起
- 17. Selenium Chromedriver挂起?
- 18. java.lang.Process.waitFor()挂起
- 19. phpmyadmin挂起
- 20. tensorflow.merge_all_summaries()挂起
- 21. WebClient.DownloadData挂起
- 22. SqlConnection.OpenAsync()挂起
- 23. pg_dump的挂起
- 24. Django fastcgi挂起
- 25. httprequest.GetResponse()挂起?
- 26. httpsURLConnection.getInputStream()挂起
- 27. HttpWebRequest挂起
- 28. Java zip.close()挂起
- 29. 任务挂起
- 30. CrystalDecisions.CrystalReports.Engine.ReportDocument.Load挂起
什么是挂?调用_endthreadex的线程不再执行,因此它不能执行挂起。 – 2008-12-09 15:27:31
亚当你找到任何解决方案?我只是陷入了同样的情况。从DLL中的静态对象的dtors中销毁线程是否正确? – StNickolay 2013-08-21 14:08:43