我为我的4个线程使用CreateThread()。
我想同时运行所有线程,但在继续执行主线程之前,请等待所有4个线程完成。
我使用了一个int,并在线程的开始处增加了它,然后在最后减少了它,然后在我的主线程中,我使用了一个while循环来保持数字超过某个值。似乎无法正常工作。
这可能吗?等待线程
Q
等待线程
2
A
回答
1
您可以使用signaled states和WaitForMultipleObjects函数的机制等待事件或线程本身(由它们的句柄指向)到达已发信号状态。
通过在这些线程之间简单地共享单个变量,您可能会遇到同步问题,尤其是当它们分布在CPU内核中时。
如果要在不使用同步机制的情况下自动修改共享值,请使用“Interlocked *”功能,如InterlockedIncrement,尽管这并不能完全保证不会有问题。不要将该方法用作同步机制。
0
如果你想你的主线程等待所有子线程完成自己的工作,然后 您可以使用:
编辑:
啊是windows平台(我之前没有注意到),所以你需要使用,
7
使用WaitForMultipleObjects
与bWaitAll
标志设置在所有线程句柄上。一旦所有线程退出,函数都会返回。
0
你可能想要做的是创建四个线程,然后在返回的四个句柄上按顺序调用WaitForSingleObject
。只需确保四个线程退出,并致电ExitThread
。
编辑:
或者,如Hasturkun的答复中指出,使用WaitForMultipleObjects
...这将是聪明的。 :-)
相关问题
- 1. 多线程 - 等待线程
- 2. 等待的线程
- 3. 让线程等待
- 4. Java多线程等待线程完成
- 5. 多线程:等待在主线程
- 6. 等待多个线程(POSIX线程,C++)
- 7. 等待的线程问题
- 8. Android GridView和线程等待
- 9. 重用等待线程
- 10. 线程等待通信
- 11. 等待对方的线程
- 12. 多个线程等待NetworkStream.Read
- 13. 线程在C“等待父”
- 14. 等待的Win32线程
- 15. Java Worker线程等待
- 16. pthread_join - 多线程等待
- 17. 等待UI线程完成
- 18. C++等待多线程
- 19. 等待线程完成python
- 20. 繁忙的等待线程
- 21. C++ 11线程等待
- 22. Java线程等待值
- 23. Boost线程等待条件
- 24. 线程等待家长
- 25. soundPool.load()里面(等待)线程?
- 26. 线程和正在等待
- 27. 不等待线程结束
- 28. 线程锁无限等待
- 29. GCD和线程等待
- 30. 请等待后台线程?
您不需要事件,线程在Windows中是可等待的对象。 – Hasturkun
是的,我忘了这一点,并相应地修改了答案。 :) – macbirdie