青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

牽著老婆滿街逛

嚴以律己,寬以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 0 .

Erlang風格的并行(Erlang Style Concurrency)

轉載自:http://cplusplus.wikidot.com/cn:erlang-style-concurrency

我們常常能在 Erlang 的文檔和源碼之中看到Ulf Wiger這個名字,他是 Erlang 最初的開發者之一。最近他寫了一篇博客《What is Erlang-Style Concurrency?》對于“Erlang風格的并行”發表了自己的看法,粗淺譯來,給大家共享。

原文:http://ulf.wiger.net/weblog/?p=10
譯文:http://erlang-china.org/news/erlang-style_concurrency.html
譯者:jackyz

現下時不時都能看到“用 language X 來做 Erlang 風格的并行”這樣的博客文章。我想這是好事,這表明大家都開始認真研究有關并行的問題了。

然而,對于“Erlang 風格的并行”這一術語,仍然缺乏一個權威的定義。我在這里嘗試給出自己的定義。

Joe Armstrong在他的《Programming Erlang》中寫了這么一段話:

“在Erlang中:
      進程的創建和銷毀非常迅速
      進程之間傳遞消息非常迅速
      進程的行為獨立于操作系統
      進程可以有大規模使用
      進程之間徹底獨立不共享內存
      進程之間交互的唯一途徑就是消息傳遞”

可以將這看作是一個“權威定義”,但稍嫌不夠完整。

我想再加上這么幾條:

  • 消息傳遞是異步的
  • 進程可以彼此監控
  • 可以選擇性的接收消息
  • 遠程進程和本地進程基本保持一致

上面的這些條目概略的描述了 Erlang 中并行的工作方式。那么,對于“Erlang 風格的并行”,是否這些條目全都是不可或缺呢?也許并非如此。

我想下面的這些特性都是必須的:

  • 迅速的進程創建和銷毀
  • 不費力的支持至少10K以上的并行進程
  • 迅速的異步消息傳遞
  • 復制的消息傳遞機制(無共享的并行)
  • 進程監控
  • 選擇性的消息接收機制

稍作解釋:

速度和伸縮性

要讓并行成為一種具有實用價值的基本建模手段,必須要讓程序員能放心的創建解決問題所需的大量進程,而無需擔心會因此而影響效率。若要以一句話來概況“Erlang 風格并行”的精髓,那就是——它讓你可以按照問題自身內在的并行模式來構建應用。如果認為創建進程代價高昂,程序員就會盡量重用已有的進程;如果認為消息傳遞代價高昂,就會發明出其它的技術以避免傳遞消息。而這些手段通常是有害的(對于并行來說)。

凡事都有自己的局限。Erlang 被設計用來于做“代理風格”的并行,而不是大數據量的并行。在 Erlang 中你“只能”有約 120M 個并行進程,如果內存足夠的話。我本人試過,在 20M 個并發進程時,Erlang 仍然保持一貫的性能(我當時沒有更多的內存可以繼續嘗試)。對于某些極端應用來說,(約5-10微秒)創建一個進程的代價仍嫌昂貴,但相比UNIX進程或 POSIX線程,至少“廉價”了幾個數量級。“Erlang 風格的并行”在進程的粒度上,應與 Erlang 大體保持一致。

異步消息傳遞

對于異步或者同步的消息傳遞,孰優孰劣曾經有過爭論。的確,同步消息傳遞更易于理解。但在分布式的環境下,異步通訊(也就是所謂的“發送-祈禱”)則更符合直覺。基于同步消息傳遞的系統,在分布式的環境下也必須訴諸于某種形式的異步通訊機制,方可完成任務。盡管仍然存在爭議,但無論如何異步消息傳遞仍是 “Erlang 風格并行”的一個特征。

復制機制

注意,這里的并不意味著說在所有的情況下都必須要完全復制所有的消息,重點不在方式,而在效果。這很重要,

主要原因如下:

  • 從可靠性角度考慮,進程不能共享內存
  • 在分布的環境下,復制不可避免,我們盡可能的在本地和遠程的消息傳遞中都保持相同的機制

要求進程之間不能共享任何東西,這可能太過嚴格,很有可能會將大部分的編程語言都被排除在“Erlang 風格的并行”之外(甚至連Scala這樣的語言都預留了在進程之間共享數據的可能)。那么好吧,我們至少應該說,Erlang 風格使得用非共享的方式來實現并行要比共享方式更為容易。

進程監控

這是“邊界外”錯誤處理機制的根基。在 Erlang 中,典型的錯誤處理哲學是——讓它崩潰。其要義就在于,你的程序只處理正常情況,出現異常的情況則交由監控進程來負責處理。這么做的結果是,在大型系統中,能漂亮的實現容錯。

選擇性的消息接收

有N中方法可以實現選擇性的消息接收,但對于復雜的多路并行而言,你必須至少要支持其中的一種。在達致并發的路上,這一點很容易被忽視。簡單的程序之中,你也不會很明顯的感到它的必要,但若當你真正發現它的價值,你很可能已經被“復雜性爆炸”折磨很久了。

我建議將選擇性的消息接收機制列為 Erlang 風格并發的一個充分條件。它可以通過對單一消息隊列進行匹配的方式(Erlang, OSE Delta)來實現,也可以通過多郵箱/頻道的方式(Haskell, .Net, UNIX 套接字)來實現。選一個,找個合適的例子,演練它,體驗它。如果你愿意,可以參照我的“Structured Network Programming”演示。

—樸素的分隔線—

注:跟隨這個鏈接你會發現“Erlang-Style Concurrency”正在迅速變成一個“即將臭大街”的名詞,也許正是擔心這種狀況的出現,Ulf Wiger 發表了這篇博客,對于一些聲稱自己是 Erlang-Style 的 tricky ,劃出了一道明確的標準,以正視聽。只是后續的發展到底如何,還需繼續觀察。

譯后 blah :

記得曾在 maillist 見到 Joe Armstrong 說過“Erlang(語言) 的力量不在語言,Erlang 是很淺顯的語言,而是在于語言和虛擬機之間的高度適配”。spawn一個進程,選擇性的從隊列中取出一條消息,或者以copy的方式發送一個異步消息,這些都不難做到,基本上哪個語言都能做到;難的部分就在于將這些部分在虛擬機中不斷打磨,以“極廉價的操作”為目標來高度優化,讓其走出珠寶店,進入菜市場,成為編寫程序時的一個可選常規工具;我們所使用的工具,它的特性,會反過來影響我們看待問題的方式。當它改變我們對系統建模的思維方式,并形成自己的一套思維模式時,即由此延生出了所謂的 COP 思想。這就是 Erlang 或者說 COP 所走過的路。類似 Scala 或其它以并發為設計目的之一的語言,若想達致 COP 的實用境界,很可能也必須要歷經這個痛苦鍛造過程的各個階段。而對于 COP 思想來說,也將會增加一個新的具有實用價值的實踐平臺。


posted on 2011-12-29 18:02 楊粼波 閱讀(1075) 評論(0)  編輯 收藏 引用 所屬分類: 網絡編程C++

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲欧美日韩成人| 欧美一区二区三区在线| 欧美日韩99| 你懂的成人av| 久久中文在线| 欧美a级片网| 欧美精品在线视频| 欧美日韩精品一区二区在线播放| 欧美日韩精品不卡| 国产精品一区二区欧美| 国内精品久久久久久| 在线观看一区| aa成人免费视频| 欧美亚洲一区二区在线| 久久久久久久综合色一本| 欧美成人午夜免费视在线看片| 91久久精品美女高潮| 亚洲精品黄色| 香蕉久久夜色| 欧美极品aⅴ影院| 国产精品日韩在线观看| 在线不卡欧美| 午夜视频一区| 亚洲国产精品高清久久久| 亚洲综合欧美| 欧美成人精品在线播放| 国产目拍亚洲精品99久久精品| 亚洲大胆美女视频| 午夜国产精品视频免费体验区| 麻豆久久久9性大片| 一区二区免费在线观看| 麻豆久久精品| 国产视频一区在线观看一区免费| 亚洲欧洲精品成人久久奇米网| 午夜精品免费视频| 亚洲精品视频啊美女在线直播| 欧美伊久线香蕉线新在线| 欧美激情一区二区在线| 影音先锋中文字幕一区| 亚洲欧美日韩中文播放| 最新高清无码专区| 久久久久久97三级| 国产精品一区视频| 亚洲欧美综合一区| 国产精品99久久久久久宅男 | 久久婷婷久久一区二区三区| 亚洲日本欧美天堂| 宅男在线国产精品| 亚洲欧洲日产国产网站| 欧美一区二区三区在线观看| 日韩一级大片| 欧美国产日韩一区二区三区| 激情欧美亚洲| 久久国产直播| 亚洲一区精品电影| 欧美午夜大胆人体| 中文精品视频一区二区在线观看| 欧美黄色免费| 美女国内精品自产拍在线播放| 国产一本一道久久香蕉| 性感少妇一区| 亚洲欧美电影在线观看| 国产精品久久久亚洲一区| 亚洲在线观看免费| 亚洲一区二区三区精品在线观看| 欧美日韩国内自拍| 亚洲一级二级| 亚洲午夜日本在线观看| 性色av一区二区三区| 国产久一道中文一区| 欧美在线网站| 欧美一级在线亚洲天堂| 国产日韩欧美三级| 久久人91精品久久久久久不卡| 欧美亚洲尤物久久| 在线观看亚洲a| 亚洲国产成人精品久久| 欧美激情一二三区| 亚洲欧美国产精品桃花| 性欧美大战久久久久久久久| 激情综合自拍| 亚洲三级影片| 国产麻豆精品theporn| 久久精品一区二区| 麻豆精品视频在线观看视频| 一区二区三区久久| 午夜精品久久久久久久久| 亚洲福利一区| 中文精品99久久国产香蕉| 国产一区二区三区黄| 欧美激情精品久久久久久| 欧美日韩成人在线播放| 久久精品免费播放| 欧美精品1区| 久久久精品久久久久| 欧美成人一区二区在线| 亚洲欧美中日韩| 理论片一区二区在线| 亚洲视频在线看| 久久国产黑丝| 亚洲视频在线观看免费| 久久国产精品久久久久久| 亚洲人永久免费| 午夜精品短视频| 亚洲精品人人| 久久综合狠狠综合久久综合88| 欧美大片免费观看在线观看网站推荐| 亚洲私人影院在线观看| 亚洲国产91| 亚洲午夜视频在线观看| 欧美黄色成人网| 亚洲欧洲在线看| 国产亚洲欧美一区在线观看| 一区精品在线播放| 亚洲黄色在线| 国产精品va在线| 欧美91福利在线观看| 欧美日韩精品免费观看视频完整| 久久国产精品99国产精| 欧美日韩另类丝袜其他| 男女精品视频| 国外成人在线视频| 亚洲综合精品四区| 在线视频中文亚洲| 欧美福利视频| 欧美国产日韩一区二区| 国产综合在线看| 午夜在线观看欧美| 亚洲欧美一区二区三区久久| 欧美理论大片| 最近看过的日韩成人| 亚洲高清久久久| 久久嫩草精品久久久久| 久久精品一二三区| 国产亚洲精品高潮| 亚洲欧美日韩精品久久奇米色影视 | 午夜宅男久久久| 欧美日韩精品高清| 91久久久久久国产精品| 亚洲国产精品女人久久久| 久久久久久一区| 欧美aⅴ一区二区三区视频| 樱桃视频在线观看一区| 久久久久久久高潮| 欧美福利一区二区三区| 亚洲美女黄色| 亚洲国产精品黑人久久久| 欧美午夜电影在线| 艳女tv在线观看国产一区| 在线一区日本视频| 欧美日韩一区二区在线观看| 久久亚洲美女| 在线精品一区二区| 欧美成人一区二区三区| 亚洲精品在线免费观看视频| 99国产精品久久久| 国产精品国产自产拍高清av| 一区二区三区精品久久久| 久久精品亚洲国产奇米99| 精品9999| 欧美激情区在线播放| 这里是久久伊人| 久久精品一区| 99精品欧美一区二区三区| 欧美性猛交视频| 久久激情综合网| 91久久精品日日躁夜夜躁欧美| 中文亚洲免费| 黑人一区二区三区四区五区| 男女激情久久| 亚洲一区二区三区午夜| 麻豆freexxxx性91精品| 一本色道久久综合亚洲精品婷婷| 国产精品免费一区二区三区在线观看 | 亚洲国产裸拍裸体视频在线观看乱了中文| 亚洲精品自在久久| 国产精品视频一二| 久久蜜桃精品| 亚洲视频一二三| 女生裸体视频一区二区三区| 国产三级欧美三级| 欧美精品国产精品| 欧美一区二区私人影院日本| 亚洲国产影院| 久久亚洲精品欧美| 亚洲欧美视频在线| 99精品视频一区| 影音先锋另类| 国产色视频一区| 国产精品wwwwww| 欧美激情中文字幕乱码免费| 久久精品国产精品亚洲| 亚洲一区免费网站| 妖精视频成人观看www| 亚洲福利视频专区| 久久综合色天天久久综合图片| 性欧美1819sex性高清| 国产精品99久久99久久久二8| 亚洲激情一区二区| 樱桃国产成人精品视频|