我爲我的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