Async.RunSyncly方法阻止

  • 本文关键字:方法 RunSyncly Async f#
  • 更新时间 :
  • 英文 :


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

是的,Async.RunSynchronously块。一个简单的例子:

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# 中的StartImmediate - 但它不会等待)。

最新更新