我如何才能同时并行运行这两个独立的循环。

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-序列上的计算是惰性的,因此在任务中运行它们实际上不会执行任何操作。使用数组,整个计算将立即完成。

09-26 20:12