【发布时间】:2011-08-19 01:54:00
【问题描述】:
我开始看Jon Skeet's presentation on C# Async CTP。他在指定超时时结结巴巴。
由于对 F# 的了解相当有限,因此有一种直观、集中且简单的方法来指定超时。所以,我想知道目前的情况是什么:C# Async CTP 可以做 F# async block runner 做的所有事情吗?是否有概述差异和限制的文件?
其他细节: 在 F# 中,异步块运行器提供了一种指定以下内容的方法:
- 异常流程
- 超时流程
- 取消流程
- 上述三个功能的可扩展性
这是在 F# 中执行这些操作的一种方法: Order of arguments and pipe-right operator
【问题讨论】:
-
请注意,F# 中的异步工作流也会暴露尾调用(
return!到另一个工作流),这非常重要。 C# 有这个吗? -
@Jon Harrop:我只知道 C# 没有尾调用优化。我不相信 5.0 会发生变化。
-
@Jon Harrop:在观看了以下讨论 (channel9.msdn.com/Shows/Going+Deep/…) 之后,我离开的印象是您可以在链中编写异步调用。但是在这里和乔恩交谈之后,我不太确定。可能值得一个单独的 Q。
-
他们实际上在 C# CTP 中有一个完整的蹦床实现,可以用来模拟尾调用,因此他们可能会或确实在调用一个异步时使用它来实现尾调用消除从另一个。但是,我不确定他们是否会这样做,即使他们这样做,蹦床的速度也是出了名的慢。
标签: c# .net f# timeout async-ctp