BT

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

微软发布了Axum

| 作者 Abel Avram 关注 7 他的粉丝 ,译者 王瑜珩 关注 0 他的粉丝 发布于 2009年5月13日. 估计阅读时间: 3 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

Axum是微软开发的并行编程语言,目前还处在试验阶段,两周前InfoQ公布了这个项目的发布计划。现在,Axum的一个初期版本(v0.1)已经发布并提供下载

Axum目前仍然是一个试验性的项目,微软DevLabs表示此次发布的版本,其主要目的是希望收集来自社区的反馈:

无论Axum最终是否会成为一个产品,是否能使并行编程变得更安全、更易于扩展和更高效,(社区的)反馈都是它成功的最大因素。

Axum曾经叫做Maestro,它的目标是提供一个.NET环境下的并行编程模型,支持隔离、actor和消息传递。此语言借鉴了很多Erlang语言的元素,不过拥有类似C#的语法。

Axum是一个拥有类似C#语法的命令式语言,它面向actor和域(domain),而不是面向对象的,因此它拥有对象的概念,但是不能自定义类。Axum主要用途是解决并发处理问题,它基于微软机器人实验室的CCR,其他.NET平台的编程语言可以通过调用Axum来实现并发处理。

并行安全的最大障碍是共享数据。在Axum中使用共享数据之前需要进行声明,这样运行时就会控制数据访问的过程。语言中已经内建了并发控制机制。

Axum的主要元素是域。域是一个资源仓库,它是数据、代理和函数的集合。域与域之间是相互隔离的,以此保护它们各自独立或共享的数据。域中的所有代理可以共享域中的数据,代理之间通过信道(Channel)来交换消息,而域中的函数都是无状态的。不同域的代理之间在通信时需要某种元数据来进行协调,这些元数据便是“架构(Schema)”。

基本上,一个代理就是可以和其他代理进行通信的线程,它们通过添加reader或writer的声明来访问共享数据:

domain A {
    int i;
    int func(int k){}
    writer agent X: Channel1 {}
    reader agent Y: Channel2{}
}

domain B {
    int j;
    agent Z: Channel1 {}
}

域与域之间通过代理进行通信可以用下图来表示:

axum

您需要安装Visual Studio 2008才能使用Axum。

相关链接:下载Axum语言规范(PDF),Axum用户手册(PDF),Axum项目组博客

查看英文原文:Axum, Microsoft’s Approach to Parallelism Microsoft Has Released Axum

评价本文

专业度
风格

您好,朋友!

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

获得来自InfoQ的更多体验。

告诉我们您的想法

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

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

Axum和.net 4.0中的Parallel Extension的关系谁什么样的 by Lee Jerin

同题。

Re: Axum和.net 4.0中的Parallel Extension的关系谁什么样的 by 易 卓霖

前者是一门语言,后者是一个函数库

允许的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通知我

2 讨论

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


找回密码....

Follow

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

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

Like

内容自由定制

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

Notifications

获取更新

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

BT