微軟發(fā)布并行編程語(yǔ)言Axum
Axum目前仍然是一個(gè)試驗(yàn)性的項(xiàng)目,微軟DevLabs表示此次發(fā)布的版本,其主要目的是希望收集來自社區(qū)的反饋:
無(wú)論Axum最終是否會(huì)成為一個(gè)產(chǎn)品,是否能使并行編程變得更安全、更易于擴(kuò)展和更高效,(社區(qū)的)反饋都是它成功的最大因素。
Axum曾經(jīng)叫做Maestro,它的目標(biāo)是提供一個(gè).NET環(huán)境下的并行編程模型,支持隔離、actor和消息傳遞。此語(yǔ)言借鑒了很多Erlang語(yǔ)言的元素,不過擁有類似C#的語(yǔ)法。
Axum是一個(gè)擁有類似C#語(yǔ)法的命令式語(yǔ)言,它面向actor和域(domain),而不是面向?qū)ο蟮?,因此它擁有?duì)象的概念,但是不能自定義類。Axum主要用途是解決并發(fā)處理問題,它基于微軟機(jī)器人實(shí)驗(yàn)室的CCR,其他.NET平臺(tái)的編程語(yǔ)言可以通過調(diào)用Axum來實(shí)現(xiàn)并發(fā)處理。
并行安全的最大障礙是共享數(shù)據(jù)。在Axum中使用共享數(shù)據(jù)之前需要進(jìn)行聲明,這樣運(yùn)行時(shí)就會(huì)控制數(shù)據(jù)訪問的過程。語(yǔ)言中已經(jīng)內(nèi)建了并發(fā)控制機(jī)制。
Axum的主要元素是域。域是一個(gè)資源倉(cāng)庫(kù),它是數(shù)據(jù)、代理和函數(shù)的集合。域與域之間是相互隔離的,以此保護(hù)它們各自獨(dú)立或共享的數(shù)據(jù)。域中的所有代理可以共享域中的數(shù)據(jù),代理之間通過信道(Channel)來交換消息,而域中的函數(shù)都是無(wú)狀態(tài)的。不同域的代理之間在通信時(shí)需要某種元數(shù)據(jù)來進(jìn)行協(xié)調(diào),這些元數(shù)據(jù)便是“架構(gòu)(Schema)”。
基本上,一個(gè)代理就是可以和其他代理進(jìn)行通信的線程,它們通過添加reader或writer的聲明來訪問共享數(shù)據(jù):
domain A { |
域與域之間通過代理進(jìn)行通信可以用下圖來表示:

您需要安裝Visual Studio 2008才能使用Axum。
【編輯推薦】