在一個有多個併發任務操作數據的系統中,我想要排定這些任務,使得等待時間最短。 系統中的每個任務都使用一組特定的資源,任務按特定順序發出(這個順序就是我想要計算的),任務只有在能夠鎖定所有需要的資源時纔會啓動。任務按順序發出,所以第三個任務在第二個任務獲得所有鎖之前不會啓動,依此類推。訂購併發任務以儘量減少等待時間
Task 1, Resources [A, B]
Task 2, Resources [B, C]
Task 3, Resources [C, D]
Task 4, Resources [E]
Best Solution
Task 1, [A, B]
Task 3, [C, D] //No waiting is possibly required
Task 4, [E] //Put this before task 3, to maximise the distance between uses of the same resource (minimise chances of lock contention)
Task 2, [B, C] //Some waiting *might* be required here
什麼算法可以用來計算最佳排序,以便在使用的資源之間存在最大差距,然後再次使用?
Nb。這是語言不可知的,但在C#中的實現的獎勵點數爲
您需要提供更多信息。除非我們知道任務運行了多長時間,否則沒有明確的最小等待時間定義。你想盡量減少預計的等待時間?那麼你需要定義一個任務在時間j之後釋放一個鎖的概率,等等等等。 – 2010-03-04 03:35:45
對不起,你可以假設所有的任務有相似的運行時間,因此減少等待時間包括最大化使用資源以及資源的後續使用 – Martin 2010-03-04 19:02:40