在这里,我们看到Don Syme撰写的有关F#中的异步状态机的论文 我正在努力解决这个问题。

我的问题是-这与C#中的async命令是否具有相同的作用? (以及go-lang中的go命令)

===============>>#1 票数:0 已采纳

并不完全相同,不是,但是C#还使用状态机在编译时构建方法的异步版本。

请参阅http://msdn.microsoft.com/zh-cn/magazine/hh456403.aspx ,以获得Mads Torgersen撰写的精彩文章,内容涉及如何在编译器中针对C#的异步令牌重写方法。

在golang中,goroutine在概念上比异步令牌更类似于.Net TPL。 如果goroutine变得阻塞,它将在线程上交换为另一个,因此您正在使用更多的线程池构造。 Go在后台为您处理非阻塞I / O。

  ask by hawkeye translate from so

未解决问题?本站智能推荐:

1回复

如何在F#中使用这个EF Core C#异步方法?

我正在使用带有实体框架的F#,我无法理解使用F#的C#异步方法。 尽管其他与类似问题相关的SO答案无法真正解决。 这是我尝试使用下面的代码,最初是同步的: let getAirport (id: Guid) = use context = new MyContext()
1回复

使用在C#中声明的虚拟异步任务并在F#中覆盖它

目前我有一段用C#编写的代码,它被一段F#代码用作.NET库。 这是问题: 假设我在C#库中有以下类: 然后在F#中覆盖,如下: 问题是this.OnSetup()成员正在尝试返回Async<unit>但C#库期望一个正常的空Task 。 我试过通过MSDN
1回复

如何在F#中编写此异步IO C#代码?

我有这个代码: 我想在F#上写它,在我无法弄清楚该怎么做之前我得到了这个: 我已经四处寻找,但这里有几个概念,我不能把它们放在一起。
2回复

正确等待F#异步C#方法,返回类型为Task

我希望能够从F#中使用C#库。 大多数情况下,这非常简单。 但是,如果我尝试调用返回Task<T>的函数,则无法获取返回的值。 所以,我有C#方法,其定义如下: 我试图从F#中使用此方法,如下所示: let readEventFromEventStore<'
2回复

C#异步/等待如何与更通用的构造(例如F#工作流或monad)相关联?

C#语言设计始终(从历史上)一直着眼于解决特定问题,而不是寻找解决潜在的一般性问题:例如,参见http://blogs.msdn.com/b/ericlippert/archive/2009/07/09/针对“ IEnumerable与协程”的iterator-blocks-part-one.a
3回复

实现C#方法返回Task 在F#中

我在F#中创建了一个继承自C#类的类型,该类公开了一个在C#中返回Task<T>的方法。 我正在尝试找出在F#中做到这一点的最佳方式 说我的C#看起来像这样: 我在F#中继承该类型的第一步看起来像这样: 但是a)它不觉得它实际上是异步的并且b)它只是感觉不是-
2回复

等效于F#StartImmediate

是否有可以在Task上执行的F#的StartImmediate的C#等效项? 我遇到的情况是有时需要等待一个函数,但是有时我只希望该方法不使用await即可回调UI线程。 我想尽可能避免异步无效。 例: 在F#中,它看起来像这样: let CallDoSomething
2回复

如何在F#中实现返回Task(非泛型)的方法的接口

说我有接口: 以前由C#类实现: 现在我想在F#中实现相同的功能: 但是得到一个错误(1): 该表达式应该具有类型Task,但这里的类型为Async <'a> (2): 类型约束不匹配。 类型Task与类型Task <'a&
1回复

F#:如何“等待”处理程序中的一个函数,以便异常仍然冒泡到处理程序?

我想用EasyNetQ卸载用于订阅RabbitMQ的处理程序,在C#中得到我想要的东西,因为处理程序本身被标记为async ,因此我可以等待卸载,换句话说: var subscription = bus.PubSub.Subscribe<Message>("subscription
3回复

C#中的Agent / MailboxProcessor使用新的async / await

这个问题结合了我不完全理解的两个主题 通过阅读有关F#中的异步的文章 ,我遇到了Agent / MailboxProcessors的主题,它可用于实现被动状态机。 是否可以使用C#5中的新异步/等待功能来实现C#中类似的功能,或者是否已经存在更适合的类似模拟?