我怎么知道该线程已完成其任务?

时间:2012-02-15 08:41:25

标签: windows winapi operating-system

举个例子: -

我使用pThread Api创建了帖子CreateThread,这将执行一些任务,如vSampleTask

我如何知道 pThread 已完成其任务?

由于

2 个答案:

答案 0 :(得分:4)

您可以使用WaitForSingleObject或其他一个等待函数等待线程句柄。例如,您可以使用MsgWaitForMultipleObjects允许等待被输入消息中断。线程执行完成后,线程句柄就会发出信号。

作为替代方案,您可以通过调用GetExitCodeThread来检查线程的状态。如果线程仍然忙,则返回FALSE,如果线程已完成,则返回TRUE。如果线程已完成,则也将返回退出代码。

如果一个线程需要等待另一个线程完成,那么您应该使用等待函数而不是调用GetExitCodeThread的忙轮询循环。繁忙的循环和轮询只会消耗不必要的CPU(和电量)。等待函数允许等待线程空闲。

答案 1 :(得分:3)

您可以GetExitCodeThread询问线程的状态。