我正在使用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。