写点什么

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

2010 年 5 月 05 日

随着.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 未来版本包含并行编程库的投票。

2010 年 5 月 05 日 08:381790
用户头像

发布了 254 篇内容, 共 39.1 次阅读, 收获喜欢 2 次。

关注

评论

发布
暂无评论
发现更多内容

架构师到底是什么

molingwen

极客大学架构师训练营

第一周作业

free[啤酒]

架构

食堂就餐卡系统架构设计

子豪sirius

第一周·总结 架构师如何做架构设计

刘璐

架构学习第一周作业

+╮(╯▽╰)╭/>……

极客大学架构师训练营 总结 - 第一课

Darren

【架构训练Week01作业】Review

Rex

第一周:课程笔记及总结

Alex

极客大学架构师训练营

架构 0 期-week1-学习总结

陈俊

架构师训练营第一周学习总结

坂田吴奇隆

极客大学架构师训练营

架构师训练营-第一周总结

+╮(╯▽╰)╭/>……

第一周:食堂就餐卡系统设计

Alex

极客大学架构师训练营

作业二【0606学习小结】

道法自然

极客大学架构师训练营

【架构师第一周】总结

浪浪

第一周作业

慵秋

食堂就餐卡系统设计(作业模拟)

潜默闻雨

食堂餐卡系统设计

张磊

就餐卡系统UML图

漂泊者及其影子

极客大学架构师训练营

架构设计第一课

Dennis

就餐卡管理系统设计文档

倪惠华

架构师训练营-第一课作业

Linuxer

极客大学架构师训练营

week1-食堂就餐卡系统架构设计

暖丶冬

【架构训练Week01作业】食堂就餐卡系统设计

Rex

week1《作业一:食堂就餐卡系统设计》

任鑫

食堂就餐卡系统设计

努力努力再努力m

架构 极客大学架构师训练营

食堂就餐系统设计文档

云064

食堂就餐卡系统

孙野

架构方法之架构设计文档【总结】

小叶

架构设计

食堂就餐卡系统设计

心在飞

极客大学架构师训练营

架构师训练营-作业 食堂就餐卡系统设计

netbanner

极客大学架构师训练营

食堂就餐卡系统设计

新世界

编译系统设计赛(华为毕昇杯)技术报告会|5月1日

编译系统设计赛(华为毕昇杯)技术报告会|5月1日

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