0
所以基本上我所處的情況是我有一堆線程,每個線程在整個一週進行不同的計算。在本週結束時,每個線程調用函數X(),然後開始計算下一週並重復此循環。多線程但只允許使用一個方法
但是,只有一個線程才允許實際執行方法X()中的操作,並且只有當所有線程都已達到方法X()時才執行操作。而且,沒有任何線程可以繼續前進,直到完成使用方法X()的一個線程。
所以我很難實現這一點。我覺得我需要使用一個條件變量,但我仍然不知道線程和什麼。
可能有幾種方式來處理它,但它聽起來像一個信號量,主要是。 –
聽起來像兩個問題:首先你需要等待所有線程準備好調用X() - 聽起來像是一個線程連接。其次,你需要所有的線程調用X(),但一次只允許一個 - 信號量或簡單的互斥量可以被使用(或者真的,一旦所有線程在第一步之後加入 - 你可以迭代線程和調用X()。) – MaximR
創建一個互斥鎖並讓所有線程嘗試獲取一個鎖。然後,在函數X()中檢查一個像「alreadyRan == false」這樣的標誌。如果它爲假,請將其設置爲true。這樣每個線程都會調用X(),但只有第一個到達那裏的人會對它做任何有意義的事情。 – DigitalGhost