F# Async.RunSynchronously方法是否阻塞?

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

从中可以看出,Async.runsynchronous运行异步计算并等待其结果。我还读到,它类似于C#中的wait。我很好奇这是否会阻止线程直到它运行完成

是,
异步。同步运行
块。一个简单的例子:

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
,但不会等待)