读书人

并行运作

发布时间: 2012-08-07 14:54:48 作者: rapoo

并行运行
并行运行

open System
open System.Threading.Tasks

Parallel.For (0, 100,
fun i ->
printfn "Starting %d ..." i
System.Threading.Thread.Sleep (100*i%8)
printfn "Finished %d ..." i
)

输出结果:
Starting 0 ...
Starting 50 ...
Finished 0 ...
Starting 1 ...
Finished 50 ...
Starting 51 ...
Finished 1 ...
Starting 2 ...
Finished 2 ...
Starting 3 ...
Finished 51 ...
......


let prog i =
async {
printfn "Starting %d ..." i
do! Async.Sleep (100%(i+1)*10)
printfn "Finished %d ..." i
return 1
}

let result =
[0..99]
|> Seq.map prog
|> Async.Parallel
|> Async.StartAsTask


输出结果:
...
Starting 98 ...
Starting 99 ...
Finished 99 ...
Finished 49 ...
Finished 32 ...
Finished 24 ...
Finished 23 ...
Finished 19 ...
Finished 18 ...
Finished 15 ...
Finished 13 ...
Finished 11 ...
....

读书人网 >编程

热点推荐