我對這裏很陌生,我希望我做的一切都正確。哪個線程完成多線程?
我想知道如何在等待完成使用WaitForMultipleObjects命令後完成哪個線程完成。目前我有一些沿線:
int checknum;
int loop = 0;
const int NumThreads = 3;
HANDLE threads[NumThreads];
WaitForMultipleObjects(NumThreads, threads, false, INFINITE);
threads[loop] = CreateThread(0, 0, ThreadFunction, &checknum, 0, 0);
它只能假設有最多三個線程在同一時間運行。所以我有一個循環開始所有三個線程(因此循環值)。問題是,當我再次瀏覽它時,我想將循環的值更改爲任何線程完成其任務的值,以便它可以再次使用。有什麼方法可以找出該陣列中的哪個線程已完成?
我會粘貼我的代碼的其餘部分,但我很確定沒有人需要它的所有147行。我想這個片段就夠了。
我只需要一個線程清理,然後我可以重新使用它。我怎樣才能將WAIT_OBJECT轉換爲0,1或2,這樣我就可以使循環的值等於循環的值,以便循環可以繼續。還是有辦法檢查三個線程中的一個線程是否空閒並且接受第一個線程? – Virlym
你可以說'int index = WaitForMultipleObjects(NumThreads,threads,false,INFINITE) - WAIT_OBJECT_0',但你也應該檢查返回值指示的其他錯誤。 –
非常感謝。我只需要一種方法來找出哪個線程已完成,因此我可以重用它。我在線程開始之前做了錯誤檢查,因爲線程只是一個簡單的數字檢查器。 – Virlym