BT

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

利用F#在Silverlight中实现并行编程

| 作者 朱永光 关注 0 他的粉丝 发布于 2010年5月6日. 估计阅读时间: 3 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

随着.NET 4的发布,要在.NET平台之上进行并行编程可谓是易如反掌。实际上,微软为大家提供了三种并行编程的基础功能。第一种是提供给C++使用的并发运行时(Concurrency Runtime);第二种是藉由.NET平台提供给托管语言的一组并行编程函数库(包括TPL、PLINQ和并行编程数据结构等);最后一种就是基于F#本身的并行编程特性。

然而,由于考虑精简的缘故,当前的CoreCLR并未包含.NET 4中的并行函数库,从而在Silverlight(即使最新的Silverlight 4)中也无法直接获得并行编程的能力。但是,大家不用气馁,我们还可以在Silverlight中利用F#来实现并行编程。

Bart Czernicki在其博文《Silverlight 3 and F# Support in Visual Studio 2010》中详细讲述了这种方式。在这篇博文中,Bart给出利用F#进行并行编程的具体步骤,相应的示例代码,以及对性能的讨论;还表达了一个非常有意思的观点:

并发编程是Silverlight超越其他RIA技术的最大特性。

Bart也提到,使用F#来在Silverlight中辅助进行并行编程的好处:

  1. 不用显式地启动、停止线程(比如调用Thread.Start)
  2. 不需使用BackgroundWorker
  3. 不需使用回调(AsyncCallBack)
  4. 无需遵循BeginExecute这样的异步模式

当然,通过F#来在Silverlight中实现并行编程,还是有诸多的不足:

  • 不能利用PLINQ
  • 如果你的代码主要由C#、VB写成,那么只能用F#编写一个包装器,来变相地实现并行
  • 目前这种方式只能在Silverlight 3上使用,这是由于F# runtime for Silverlight只发布了Silverlight 3的版本,而Silverlight 4版本的F#运行时要在Silverlight 4 Tools for VS2010正式发布的时候才会提供。

对于上面的最后一点,Gaston Hillar的博文《Silverlight 4 RC Stays With the Old .NET Threads; F# Helps》也有所提及。

无论如何,虽然我们现在可以变通地在Silverlight中进行并行编程,但还是希望微软能在未来的Silverlight版本中提供直接的并行编程功能。大家可以去这里参与Silverlight未来版本包含并行编程库的投票。

评价本文

专业度
风格

您好,朋友!

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

获得来自InfoQ的更多体验。

告诉我们您的想法

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

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

应该是“并发”编程吧 by Jeffrey Zhao

应该是“并发”编程吧,Concurrent Programming,在Silverlight中主要是异步IO,要说并行编程,Parallel Programming,没什么人会用Silverlight做并行计算的吧,所以我觉得这里PLINQ什么倒真不需要。

Re: 应该是“并发”编程吧 by Chu Kevin

如果通过F#,Silverlight能利用到多个Core的计算能力,那么就算并行了,并发和并行虽然在本质上有所区别,不过,并行的表现和并发类似。
老实说,我就需要Silverlight具备并行计算的能力。当然CoreCLR主要考虑UI的呈现性能,而没有考虑计算性能,所以万不得已还是用FullFX来进行大规模的计算。

Re: 应该是“并发”编程吧 by Dou David

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通知我

3 讨论

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


找回密码....

Follow

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

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

Like

内容自由定制

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

Notifications

获取更新

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

BT