簡體   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