let evals = let z = 4.0 [ async { do printWithThread "Computing z*z\n" return z * z }; async { do printWithThread "Computing sin(z)\n" return (sin z) }; async { do printWithThread "Computing log(z)\n" return (log z) } ]let awr = async { let! vs = Async.Parallel evals do printWithThread "Computing v1+v2+v3\n" return (Array.fold(fun a b -> a + b) 0.0 vs) }let R = Async.RunSynchronously awr printf "Result = %f\n" R[/code]
let evals = let z = 4.0 [ async { do printWithThread "Computing z*z\n" return z * z }; async { do printWithThread "Computing sin(z)\n" return (sin z) }; async { do printWithThread "Computing log(z)\n" return (log z) } ]let awr = async { let! vs = Async.Parallel evals do printWithThread "Computing v1+v2+v3\n" return (Array.fold(fun a b -> a + b) 0.0 vs) }let R = Async.RunSynchronously awr printf "Result = %f\n" R
printfn "[ThreadId = %d] %s" Thread.CurrentThread.ManagedThreadId str
let evals =
let z = 4.0
[ async { do printWithThread "Computing z*z\n"
return z * z };
async { do printWithThread "Computing sin(z)\n"
return (sin z) };
async { do printWithThread "Computing log(z)\n"
return (log z) } ]let awr =
async { let! vs = Async.Parallel evals
do printWithThread "Computing v1+v2+v3\n"
return (Array.fold(fun a b -> a + b) 0.0 vs) }let R = Async.RunSynchronously awr
printf "Result = %f\n" R[/code]
open System.Threadinglet printWithThread str =
printfn "[ThreadId = %d] %s" Thread.CurrentThread.ManagedThreadId str
let evals =
let z = 4.0
[ async { do printWithThread "Computing z*z\n"
return z * z };
async { do printWithThread "Computing sin(z)\n"
return (sin z) };
async { do printWithThread "Computing log(z)\n"
return (log z) } ]let awr =
async { let! vs = Async.Parallel evals
do printWithThread "Computing v1+v2+v3\n"
return (Array.fold(fun a b -> a + b) 0.0 vs) }let R = Async.RunSynchronously awr
printf "Result = %f\n" R