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

发布于 2025-01-05 06:28:21 字数 181 浏览 1 评论 0原文

举个例子:-

我使用 CreateThread Api 创建了线程 pThread,它将执行一些任务,比如 vSampleTask

我怎么知道 pThread 已经完成它的任务了吗?

谢谢

Say for an example:-

I have created thread pThread using CreateThread Api which will perform some task say vSampleTask

How will i know that pThread has completed its task?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

很酷不放纵 2025-01-12 06:28:21

您可以使用 WaitForSingleObject 或其他等待函数之一。您可以使用 MsgWaitForMultipleObjects例如,允许您的等待被输入消息打断。当线程执行完成时,线程句柄将发出信号。

作为替代方法,您可以通过调用 GetExitCodeThread。如果线程仍然繁忙,则返回 FALSE;如果线程已完成,则返回 TRUE。如果线程已完成,则还将返回退出代码。

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

You can wait on the thread handle with WaitForSingleObject or one of the other wait functions. You can use MsgWaitForMultipleObjects to allow your wait to be interrupted by input messages, for example. The thread handle becomes signaled when the thread's execution has completed.

As an alternative, you can check on a thread's status by calling GetExitCodeThread. This will return FALSE if the thread is still busy, and TRUE if it has completed. If the thread has completed, then the exit code will also be returned.

If one thread needs to wait for another to be complete then you should use the wait functions rather than a busy polling loop calling GetExitCodeThread. Busy loops and polling will just consume needless amounts of CPU (and power). Wait functions allow the waiting thread to become idle.

呆橘 2025-01-12 06:28:21

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

You can get GetExitCodeThread to ask for the status of the thread.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文