F# Async.RunSynchronously方法是否阻塞?
从中可以看出,Async.runsynchronous运行异步计算并等待其结果。我还读到,它类似于C#中的wait。我很好奇这是否会阻止线程直到它运行完成 是,F# Async.RunSynchronously方法是否阻塞?,f#,F#,从中可以看出,Async.runsynchronous运行异步计算并等待其结果。我还读到,它类似于C#中的wait。我很好奇这是否会阻止线程直到它运行完成 是,异步。同步运行块。一个简单的例子: let work = async { printfn "Async starting" do! Async.Sleep(1000) printfn "Async done" } printfn "Main starting" work |> Async.RunSynchronousl
异步。同步运行
块。一个简单的例子:
let work = async {
printfn "Async starting"
do! Async.Sleep(1000)
printfn "Async done" }
printfn "Main starting"
work |> Async.RunSynchronously
printfn "Main done"
这将打印:
Main starting
Async starting
Async done
Main done
它大致类似于C#中的task.RunSynchronously
——尽管可能有一些细微的区别(当主线程被阻塞并等待完成时,F#工作流将使用线程池执行,而C#等效线程可能实际在当前线程上运行工作,这更类似于F#中的startimimediate
,但不会等待)