我的意思是:当你自由设计你的app副作用时,F#代码会自动分布在所有核心上吗?
答案 0 :(得分:15)
无论如何,这里有一些关于F#中异步编程/工作流的文章,可以帮助您入门。
答案 1 :(得分:8)
F#不会自动化,只是简单易用。
又有机会链接到Luca's PDC talk。从52:20开始的8分钟是F#异步工作流程的一个很棒的演示。它摇滚!
答案 2 :(得分:3)
不,我很确定它不会自动并行化。它必须知道你的代码是无副作用的,这可能很难证明,但有一点。
当然,F#可以让更容易并行化您的代码,特别是如果您没有任何副作用......但这是另一回事。
答案 3 :(得分:2)
与其他提到的一样,F#不会自动扩展到核心,并且仍然需要一个框架,例如Josh提到的ParallelFX端口。
F#通常与并行处理的可能性相关联,因为它默认为对象是不可变的,因此在许多情况下无需锁定。
答案 4 :(得分:2)
关于纯度注释:Code Contracts具有Pure属性。我记得听过BCL的某些部分已经使用过这个。潜在地,这个属性也可以被并行化框架使用,但我现在还不知道这样的工作。另外,我甚至不确定代码联系人在F#中的使用情况有多好,所以这里有很多未知数。
但是,看看所有这些东西是如何组合在一起的将会很有趣。
答案 5 :(得分:1)
不,不会。您仍然必须通过F#支持的众多机制之一显式封送对其他线程的调用。
答案 6 :(得分:1)
我的理解是,它不会Parallel Extensions is being modified使它被F#消费。哪个不会让它自动多线程,应该让它很容易实现。
答案 7 :(得分:1)
嗯,你有答案,但我只想补充一点,我认为这是F#最重要的限制因素,因为它是混合命令/功能语言。
我希望看到F#的一些扩展,声明一个函数是 pure 。也就是说,它没有没有功能类型表示的副作用。我们的想法是,只有当函数引用其他“已知纯粹”函数时,它才是纯函数。当然,只有在可以要求作为函数参数传递的委托引用纯函数时,这才有用。