BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

.NET 4特性聚焦:并行编程

| 作者 Jonathan Allen 关注 553 他的粉丝 ,译者 朱永光 关注 0 他的粉丝 发布于 2008年10月22日. 估计阅读时间: 2 分钟 | 如何结合区块链技术,帮助企业降本增效?让我们深度了解几个成功的案例。

通用语言运行时(Common Language Runtime,CLR)以锁、线程和线程池的形式为并行编程提供基本的支持。不过,随着多核CPU重要性的逐步增加,大家又重燃构建高级并行编程函数库的热情。

很多人现在都投身于函数式编程的世界,由于它们具有不可变的对象,以及与生俱来的线程安全属性。基于F#语言的HaskellOCaml可以归入此类。其他例如Erlang这样倍受大家偏爱的语言,是基于消息传递和轻量级进程的。除了支持F#外,微软也尝试了几种不同的方式,以需求并行编程的准确提炼。

最先公布的产品是并行LINQ(Parallel LINQ),也即所谓的PLINQ。类似对SQL的处理一样,并行的版本通过语言本身来处理,而无需开发人员的努力。通过把AsParallel附加到查询上,就能正常工作了。不过正如SQL一样,在这里通常还是需要设定很多额外的选项。

下一个出现的是结构化并行性语法(Structured Parallelism),这种技术会让人想起OpenMP。不过它不像OpenMP那样,使用编译器指令标记;微软的解决方案是基于匿名委托。最直观的反应就是代码只需作细微的修改;在“for”语句内的代码块,可以作为参数传递到“Parallel.For”函数中。

如果代码无法轻易地表示为查询或迭代循环,则可以选择任务并行库(Task Parallel Library)。乍看之下,它似乎是另外一种线程池,但它却支持任务之间的父子关系。

为了对应用程序进行更好地控制,微软提供了协调一致的数据结构(Coordination Data Structures)。它们为未来提供了线程安全的集合以及改良过的同步对象。

查看英文原文:.NET 4 Feature Focus: Parallel Programming

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

F#什么时候变成Haskell和OCaml的祖宗了? by Yu Eric

“Haskell and the OCaml based language F# fall in this category.”

应该翻译成“基于Haskell和OCaml的语言F#也属于此类”

Orz

Re: F#什么时候变成Haskell和OCaml的祖宗了? by Xu Hao

Haskell 和基于Ocaml的语言 F# 也属于此类。

Re: F#什么时候变成Haskell和OCaml的祖宗了? by of this NULL

这个正确

Re: F#什么时候变成Haskell和OCaml的祖宗了? by of this NULL

Haskell 和基于Ocaml的语言 F# 也属于此类。
这个才是正确的

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

4 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT