答案 0 :(得分:10)
F#中的MailboxProcessor
类型(参见MSDN docs)实现了与Erlang基本相同的基于代理的并发模型。唯一的区别是Erlang更适合分布式计算(跨多台计算机),而F#主要在一台机器上使用编程模型(但多线程/核心)。
一般来说,我认为关于Erlang的说法也适用于F#。
关于引用:我不太确定作者究竟想说的是什么(可能有一些上下文丢失了?)。这当然并不意味着你可以采用通常的(顺序)程序,并以更快的速度神奇地运行它。
但是,如果您使用Erlang或基于F#agnet的并发编程模型,那么您可以使用每个额外的核心获得加速。这意味着您将程序编写为大量代理(F#中MailboxProcessor
的实例)。 个人代理是作为顺序子程序编写的,但您仍需要考虑不同的编程。
技术方面:Erlang不使用物理操作系统线程,也不使用F#,因此行为应该非常相似。这意味着您可以创建大量代理(这是编程模型的重点)。 F#中的代理基于异步工作流程,这使得这成为可能。
答案 1 :(得分:1)
添加核心只会提高应用程序的速度,如果它足够并发使用它们,请参阅Amdahl's Law。正确使用Erlang可以更容易地以这种方式构建应用程序,因为并发性简单且便宜。