F# 二郎';F中的s并发承诺#

F# 二郎';F中的s并发承诺#,f#,erlang,F#,Erlang,Joe Armstrong先生说,使用Erlang,我们可能会使顺序代码在N个内核中运行快N倍。这是否也适用于F#?或者ErlangVM就是这样设计的?F#是否使用操作系统或语言管理流程 MailboxProcessor键入F#(请参阅)实现了与Erlang基本相同的基于代理的并发模型。唯一的区别是Erlang更适合分布式计算(跨多台计算机),而F#主要在一台机器上使用编程模型(但多线程/核心) 一般来说,我认为关于Erlang的声明也适用于F 关于引文:我不太确定作者到底想说什么(可能缺少一些

Joe Armstrong先生说,使用Erlang,我们可能会使顺序代码在N个内核中运行快N倍。这是否也适用于F#?或者ErlangVM就是这样设计的?F#是否使用操作系统或语言管理流程

MailboxProcessor键入F#(请参阅)实现了与Erlang基本相同的基于代理的并发模型。唯一的区别是Erlang更适合分布式计算(跨多台计算机),而F#主要在一台机器上使用编程模型(但多线程/核心)

一般来说,我认为关于Erlang的声明也适用于F

关于引文:我不太确定作者到底想说什么(可能缺少一些上下文?)。当然,这并不意味着你可以使用通常的(顺序的)程序,然后神奇地将其运行快N倍

但是,如果使用Erlang或基于F#agnet的并发编程模型,那么每增加一个内核,就可以获得一个加速。这意味着您将以大量代理(F#中的
MailboxProcessor
实例)的形式编写程序。单个代理被编写为顺序子程序,但您仍然需要以不同的方式考虑编程


技术方面:Erlang不使用物理操作系统线程,F#也不使用物理操作系统线程,因此其行为应该非常近似。这意味着您可以创建大量代理(这是编程模型的要点)。F#中的代理基于异步工作流,这使得这成为可能。

如果应用程序的并发性足以使用核心,则添加核心只能提高应用程序的速度,请参阅。正确地使用Erlang可以更容易地以这种方式构建应用程序,因为并发性既简单又便宜。

另请参见