我如何才能同时并行运行这两个独立的循环。
let a1=Seq.map2 (fun a b->(1.0-a)/(a-b)) a2 a3
let b1=Seq.map2 (fun a b->a*b) b2 b3
最佳答案
您可以为此使用标准的.NET任务-没有特殊的F#函数或特殊的语法在后台生成计算:
let a1Work = Task.Factory.StartNew(fun () ->
Array.map2 (fun a b->(1.0-a)/(a-b)) a2 a3)
let b1 = Array.map2 (fun a b->a*b) b2 b3
let a1 = a1Work.Value
我还将您的
Seq.map2
更改为Array.map2
-序列上的计算是惰性的,因此在任务中运行它们实际上不会执行任何操作。使用数组,整个计算将立即完成。