Joe Armstrong先生表示,对于Erlang,我们可能会使用N核心将序列代码运行N倍.这适用于F#吗?或者是以这种方式设计的Erlang VM?F#管理操作系统或语言中的进程吗?
Tom*_*cek 10
MailboxProcessorF#中的类型(参见MSDN文档)实现了与Erlang基本相同的基于代理的并发模型.唯一的区别是Erlang更适合分布式计算(跨多台计算机),而F#主要在一台机器上使用编程模型(但多个线程/核心).
一般来说,我认为关于Erlang的说法也适用于F#.
关于引用:我不太确定作者究竟想说的是什么(也许有一些背景缺失?).这当然并不意味着你可以采用通常的(顺序)程序,并以更快的速度神奇地运行它.
但是,如果您使用Erlang或基于F#agnet的并发编程模型,那么您可以使用每个额外的核心获得加速.这意味着您将程序编写为大量代理(MailboxProcessorF#中的实例).单个代理程序是作为顺序子程序编写的,但您仍需要考虑不同的编程.
技术方面:Erlang不使用物理操作系统线程,也不使用F#,因此行为应该非常相似.这意味着您可以创建大量代理(这是编程模型的重点).F#中的代理基于异步工作流,这使得这成为可能.