簡體   English   中英

C#中的異步是否與F#中的異步相同?

[英]Is asynchronous in C# the same implementation as in F#?

C#4.5中的異步實現與線程使用方式中的F#2完全相同嗎?

它們是不同的。 主要區別在於C#使用標准.NET Task<T>來表示異步計算,而F#使用自己的類型Async<T>

更具體地說,關鍵的區別是:

  • AC#async方法創建一個立即啟動的Task<T>熱任務模型),而F#創建一個必須明確啟動的計算( 生成器模型)。 這意味着F#計算更容易編寫(您可以編寫更高級別的抽象)。

  • 在F#中,您還可以更好地控制計算的開始方式。 您可以使用開始計算Async.Start啟動它在后台或Async.StartImmediate啟動它在當前線程上。

  • F#異步工作流程支持自動取消 ,因此您不必通過CancellationToken

  • 第一點的另一個結果可能是F#異步工作流也支持尾遞歸,因此您可以編寫遞歸工作流(這在C#中不起作用,但C#不使用此編程樣式)

我寫了一篇關於這個主題的更詳細的文章: 異步C#和F#(II。):它們有什么不同?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM