我有一個使用鎖池實現的用pthread編寫的簡單線程池,所以我知道哪些線程可用。每個線程也有一個它等待的條件變量,所以我可以指示它做功。如何使鎖在另一個由另一個線程設置的線程中釋放
當工作進入時,我通過查找鎖池中的可用線程來選擇一個線程。然後,我設置一個與線程相關的數據結構,該線程包含它需要做的工作,並在線程應該開始工作的條件變量上發出信號。
問題是線程完成工作時。我需要解鎖鎖池中的線程,以便進行更多工作。但是,控制線程是設置鎖的線程,所以線程本身不能釋放此鎖。 (並且控制線程不知道什麼時候工作完成。)
有什麼建議嗎?
我可以重新構建我的線程池以使用一個隊列,在添加工作時所有線程都會發出信號,以便一個線程可以抓取它。但是,將來,線程關聯可能會成爲傳入工作的問題,並且鎖池會使執行更容易。
使用並行線程API可以確定特定線程的運行狀態,例如線程是否已完成工作? – 2010-08-21 22:53:56