写点什么

利用 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:381818
用户头像

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

关注

评论

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

我的小程序开源啦~

悟空聊架构

小程序 刷题 SpringCloud passjava 6 月日更

技术部门Leader:如何平衡技术能力与项目管理能力?

万事ONES

项目管理 研发管理 技术管理 ONES

JAVA面向对象(九)--继承

加百利

6 月日更

10分钟玩转腾讯游戏核心数据库|TcaplusDB华东客户Hands-on活动

TcaplusDB

数据库 nosql tencentdb TcaolusDB

搭建工具提升DDD开发效率

中原银行

领域驱动设计 DDD 中原银行

ES6之map方法

法医

前端 ES6 6 月日更

Python——有序字典 (OrderedDict)

在即

6月日更 六月日更

ONES x 知名车企 | 软硬件研发项目管理实践

万事ONES

项目管理 研发管理 ONES

2021年5月券商App行情刷新及交易体验评测报告

博睿数据

博睿数据 券商App 性能评测

消息中间件:为什么我们选择 RocketMQ

阿里巴巴云原生

浪潮云说丨构建实时监控能力,提升应用质效

浪潮云

云计算

HarmonyOS学习路之开发篇——Intent

爱吃土豆丝的打工人

HarmonyOS Ability intent 页面跳转

EasyRecovery---视频文件恢复技巧

淋雨

数据恢复 EasyRecovery 文件恢复 免费恢复软件 硬盘数据恢复

PornNet:色情视频内容识别网络

百度Geek说

云计算 大数据 后端 图像识别

喜讯 | 拍乐云荣膺「全球云计算大会“云鼎奖”」,先进技术受业界肯定

拍乐云Pano

react源码解析17.context

全栈潇晨

React

十亿级流量下,我与Redis时延小突刺的战斗史

vivo互联网技术

redis Jedis 调用链 流量防控

降低网络AI应用开发门槛,AIOps两大部署模式来助力

华为云开发者社区

运维 RPA 自动化 AIOPS 华为云AIOps

高可用 | Xenon:后 MHA 时代的选择

RadonDB开源社区

MySQL 高可用 Xenon

对于后端服务器,框架是怎样的?处理事务的逻辑是怎样的?你了解多少?

奔着腾讯去

c++ io 服务器 信号机制 事件

都有哪些较好用的项目管理软件?

万事ONES

项目管理 研发管理 ONES 研发工具

我是一个请求,我该何去何从

华为云开发者社区

CSE 请求 条件 Verticle Route

来自小姐姐的灵魂拷问:位运算是什么?

前端森林

计算机网络 位运算 React 二进制

算法:八皇后问题

看山

面试 算法 6 月日更

spring boot 自动装配原理详解

Geek_896619

Spring Boot

[TcaplusDB知识库]TcaplusDB架构简介

TcaplusDB

数据库 nosql tencentdb TcaolusDB

从Linux零基础小白到Linux云计算架构师的成长之路!

学神来啦

Linux 运维 运维自动化

「免费开源」基于Vue和Quasar的前端SPA项目crudapi后台管理系统实战之文件上传(十)

crudapi

Vue crudapi quasar SPA 文件上传

公安局指挥中心一体化管理系统,情指勤合成作战

13823153121

技术生态两手抓,打造面向未来的企业级领先数据库

华为云开发者社区

数据库 开源 云原生 华为云 GaussDB

缓存的世界 Redis(三)

卢卡多多

redis 六月日更

低代码的认知误区与落地实践

低代码的认知误区与落地实践

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