我为我的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. !syncblk标识等待线程
- 6. 等待的线程问题
- 7. GCD和线程等待
- 8. 等待的Win32线程
- 9. Python asyncio等待线程
- 10. 线程在C“等待父”
- 11. 线程等待监视器
- 12. 请等待后台线程?
- 13. 杀死非等待线程
- 14. 线程阻塞后等待
- 15. C#等待其他线程
- 16. 线程和正在等待
- 17. soundPool.load()里面(等待)线程?
- 18. 异步/等待与线程
- 19. iOS线程等待操作
- 20. 什么是“等待线程”?
- 21. Java等待线程完成
- 22. 线程正在等待ThreadPoolExecutor
- 23. C++线程等待时间
- 24. 线程锁无限等待
- 25. C#等待和多线程
- 26. 繁忙的等待线程
- 27. 等待对方的线程
- 28. pthread_join - 多线程等待
- 29. 等待另一个线程
- 30. 线程等待家长
您不需要事件,线程在Windows中是可等待的对象。 – Hasturkun
是的,我忘了这一点,并相应地修改了答案。 :) – macbirdie