我有一些代碼,我最初並沒有創建使用_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