我正在使用F#進行並行編程。隨着固定數量的元素,例如具有2分元素A1,A2和一個函數f,我可以做如下:F#中的列表中的Task.WaitAll
let t1 = Task.Factory.StartNew(fun() -> f a1)
let t2 = Task.Factory.StartNew(fun() -> f a2)
Task.WaitAll(t1, t2)
t1.Result, t2.Result
我不知道我怎麼會做同樣的元素列表:
let ts = List.map (fun a -> Task.Factory.StartNew(fun() -> f a))
Task.WaitAll(ts)
List.map (fun (t: Task<_>) -> t.Result) ts
Visual Studio發現Task.WaitAll無法接受任務< T>列表作爲其參數。 Task.WaitAll可以將Task []作爲參數,但它沒有任何意義,因爲我需要爲下一次計算獲取Result。