繁体   English   中英

等待线程

[英]Waiting for threads

我正在为我的4个线程使用CreateThread()。
我想同时运行我的所有线程,但在继续主线程之前等待所有4个线程完成。

我使用了一个int并在线程的开头增加了它,然后在结束时减少了它,然后在我的主线程中我使用了while循环来保持数字超过某个值...但是这似乎没有工作正常。

这可能吗?

在所有线程句柄上使用设置了bWaitAll标志的WaitForMultipleObjects 所有线程退出后,该函数将返回。

您可以使用信号状态机制和WaitForMultipleObjects函数来等待事件或线程本身(由其句柄指向)以达到信号状态。

通过简单地在这些线程中共享单个变量,您可能会遇到同步问题,尤其是当它们分布在CPU的核心中时。

如果要修改一个共同的价值原子,而不使用同步机制,使用像“联锁*”功能InterlockedIncrement ,虽然这并不能完全保证不会有问题。 不管怎样,不要将该方法用作同步机制。

如果您希望主线程等待所有子线程完成其工作,那么您可以使用:

在pthread_join

编辑:

啊它是Windows平台(之前我没注意到),所以你需要使用,

WaitForMultipleObjects的

您可能想要做的是创建四个线程,然后按顺序在返回的四个句柄上调用WaitForSingleObject 只需确保四个线程通过调用ExitThread退出。

编辑:

或者,正如Hasturkun的回答所指出的,使用WaitForMultipleObjects ......这很聪明。 :-)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM