尋找TerminateThread()
WinAPI函數。 可以找到一些有用的解釋here或查看MSDN文檔。
當然,在終止之後,您必須查看線程中分配的任何資源是否已釋放,並將其釋放。
更新
是,使用TerminateThread
是不好的做法(如在註釋中指定)。我同意這個觀點。但是「從來不使用它,即使你真的需要使用它」,從我的觀點和理論來看,它的建議太強大了。真正的世界充滿了設計缺陷和錯誤的第三方庫。
有關這一具體情況的信息不足以作出正確的決定。例如。它可能是暫時的解決辦法,沒有替代品等
因此,從觀點正確答案的理論觀點是:「有沒有辦法正確地終止進程,如果你無法控制如何‘凍結’一步後臺線程處理「。
從視圖正確答案的實際問題是:「有沒有辦法正確地終止進程,如果你無法控制如何‘凍結’一步後臺線程處理,但是,如果你意識到你不能,但。仍然需要這樣的功能 - 使用TerminateThread()API調用」
關於TerminateThread對比了TerminateProcess:
- 創建/終止過程中需要比創建/終止線程
更多的資源 - 創建/終止工藝比較複雜=>詳細漏洞的位置
- TerminateProcess不會立即終止並等待I/O o perations to complete(MSDN)=>不適用於遠程共享文件夾在閱讀和其他類似I/O場景時不可用的情況。
- 創建和終止過程中需要比創建線程多用戶權限,比較MSDN here和here
關於資源釋放:終止線程時(如在MSDN mentonied)
線程堆棧自動釋放。資源主要是資源,由主線程分配用於與後臺線程進行通信。例如。內存結構,互斥體等。
你在談論什麼類型的資源? – 2010-01-13 15:12:37
類似的問題是[這裏](http://stackoverflow.com/questions/255276/how-to-stop-long-executing-threads-gracefully) – SimaWB 2010-01-13 11:41:43