F#支持多核

时间:2010-08-20 14:13:57

标签: c# linq f#

我是F#的新手,但在Classic VB,C#和LINQ

方面有几年的经验

我喜欢F#并了解它默认会支持多个核心。 在服务器上使用可用的多核(4/5/6)是非常有利的。

F#如何做到这一点?
我也明白LINQ提供并行处理 - 它的工作方式与F#相同吗? 为什么C#没有完整的并行核心处理?

谢谢

3 个答案:

答案 0 :(得分:4)

F#中没有神奇的支持来自动并行化您的代码。只是F#的各种功能使编写并行代码比使用更强制或OO语言更容易。

也就是说,请查看Async模块,了解如何在F#中轻松编写并行代码。

答案 1 :(得分:2)

我知道F#有async你可以这样使用:

getIds()
|> List.map (
    fun id -> async {
        do! somethingAsync1 id
        do! somethingAsync2 id
    }
)
|> Async.Parallel
|> Async.RunSynchronously 

这并不是说你不能在C#中做一些工作。当然,F#在并发编程方面有一些很好的语法。

答案 2 :(得分:2)

我想你会喜欢看Luke的PDC视频:

http://blogs.msdn.com/b/lukeh/archive/2010/02/01/f-for-parallel-and-asynchronous-programming-pdc-2009.aspx

它讨论了为什么并行/并发编程很难,以及F#的哪些特性使其更容易。