說了一個例子: -我將如何知道該線程已完成其任務?
我一直在使用CreateThread
API,它會執行一些任務創建的線程pThread
說vSampleTask
我如何知道並行線程已經完成了它的任務是什麼?
感謝
說了一個例子: -我將如何知道該線程已完成其任務?
我一直在使用CreateThread
API,它會執行一些任務創建的線程pThread
說vSampleTask
我如何知道並行線程已經完成了它的任務是什麼?
感謝
你可以得到GetExitCodeThread
索要線程的狀態。
您可以使用WaitForSingleObject
或其他等待函數之一等待線程句柄。例如,您可以使用MsgWaitForMultipleObjects
來允許您的等待被輸入消息中斷。當線程執行完成時,線程句柄會變成信號。
作爲一種替代方法,您可以通過調用GetExitCodeThread
來檢查線程的狀態。如果線程仍然很忙,這將返回FALSE
,如果它已完成,則返回TRUE
。如果線程已經完成,那麼退出代碼也將被返回。
如果一個線程需要等待另一個線程完成,那麼您應該使用等待功能,而不是使用繁忙的輪詢循環調用GetExitCodeThread
。繁忙的循環和輪詢只會消耗不必要的CPU數量(和功耗)。等待函數允許等待線程變爲空閒狀態。
+1爲非投票部分。 – 2012-02-15 09:02:31
感謝大衛的迴應:) – Abhineet 2012-02-15 09:06:38
非常感謝。我明白這一點。我還有一個疑問,即完成任務後,使用「GetExitCodeThread」檢查線程是否完成其任務。我是否需要調用ExitThread Api來結束線程或自動完成? – Abhineet 2012-02-15 08:54:46
在您的Google搜索欄中輸入「GetExitCodeThread」,點擊第一個非廣告鏈接並從MS本身查找規範。在那裏你會找到更完整的答案。 – 2012-02-15 09:00:46
謝謝。 :) – Abhineet 2012-02-15 09:01:00