在范围上使用PLINQ AsParallel()

mis*_*han 4 f# plinq task-parallel-library

我想用PLINQ方法AsParallel()重写这个Parallel.For循环.据我所知,AsParallel()需要将整个序列传递给它,例如创建数组A,然后调用A.AsParallel().ForAll或A.AsParallel().选择.有没有办法让AsParallel()在一个范围内工作 - 在这种情况下,从低到高?

for k = 2 to m+n do
    let low = max 1 (k-m)
    let high = min (k-1) n
    Parallel.For(low, high + 1, (fun j ->
Run Code Online (Sandbox Code Playgroud)

svi*_*ick 5

一种方法是使用ParallelEnumerable.Range():

ParallelEnumerable.Range(low, high-low+1).Select(fun i -> let a = A.[i] in …)
Run Code Online (Sandbox Code Playgroud)