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

牽著老婆滿街逛

嚴以律己,寬以待人. 三思而后行.
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>
            久久精品国产精品| 国产自产女人91一区在线观看| 亚洲国产一区二区三区青草影视| 亚洲一区二区三区在线| 99re66热这里只有精品3直播| 亚洲精品一区久久久久久| 亚洲国产另类 国产精品国产免费| 亚洲电影第三页| 一区二区三区欧美视频| 亚洲一二三四区| 久久久久久久综合| 亚洲高清视频在线观看| 日韩午夜在线视频| 欧美在线高清| 麻豆精品视频在线观看视频| 欧美日韩国产成人高清视频| 国产精品一级二级三级| 伊人久久男人天堂| 亚洲一二三级电影| 久久久噜噜噜| 亚洲精选一区| 久久久福利视频| 欧美日韩精品免费看| 国产亚洲成年网址在线观看| 91久久精品日日躁夜夜躁欧美 | 亚洲福利视频专区| aa国产精品| 欧美影院午夜播放| 亚洲欧洲精品成人久久奇米网| 亚洲一区综合| 欧美大色视频| 国产美女精品一区二区三区| 亚洲欧洲一区二区三区| 亚洲日本一区二区三区| 亚洲欧美国产日韩中文字幕| 久久综合色综合88| 一区二区国产日产| 免费在线观看成人av| 国产性做久久久久久| 亚洲一级二级| 亚洲大片在线| 久久久久久一区二区三区| 国产精品成人播放| 亚洲精品一区在线观看香蕉| 久久在线精品| 欧美资源在线| 国产精品久久久久一区二区三区共| 亚洲国产综合91精品麻豆| 久久久久免费观看| 亚洲图片欧美一区| 欧美午夜精品| 亚洲私拍自拍| 亚洲精品三级| 欧美日韩国产综合一区二区| 亚洲黄色成人| 欧美成人一区二区三区片免费| 亚洲欧美制服中文字幕| 国产精品久久久久久久久免费桃花| 日韩视频在线永久播放| 亚洲高清资源综合久久精品| 久久久国产成人精品| 国产综合av| 久久精品视频在线播放| 久久高清一区| 一区在线免费观看| 欧美国产日韩精品| 模特精品裸拍一区| 日韩亚洲一区二区| 一区二区三区四区蜜桃| 国产精品久久午夜夜伦鲁鲁| 欧美一区中文字幕| 久久aⅴ国产欧美74aaa| 亚洲电影av在线| 亚洲激情中文1区| 国产精品av一区二区| 午夜精品视频| 欧美在线观看一区二区| 亚洲国产91色在线| 亚洲欧洲免费视频| 国产精品免费网站| 久久久久久午夜| 美国十次了思思久久精品导航| 亚洲欧洲美洲综合色网| 亚洲精品一区二区三区在线观看| 欧美日韩高清在线观看| 亚洲一区三区视频在线观看 | 亚洲伦理在线观看| 国产精品久久久亚洲一区| 国产精品免费一区二区三区在线观看 | 国产精品成人久久久久| 中文在线不卡视频| 亚洲一区二区三区中文字幕| 精久久久久久| 亚洲乱码国产乱码精品精| 国产欧美精品在线播放| 男人插女人欧美| 欧美乱妇高清无乱码| 久久国产精品久久久久久| 久久久久久久综合狠狠综合| 99国产一区二区三精品乱码| 亚洲男人av电影| 亚洲毛片av在线| 久久成人精品视频| 一卡二卡3卡四卡高清精品视频| 亚洲欧美国产高清va在线播| 激情综合电影网| 国产精品99久久久久久人| 亚洲高清不卡av| 亚洲午夜精品一区二区| 亚洲精品小视频| 欧美在线视频观看| 亚洲欧美在线免费观看| 欧美激情二区三区| 久久亚洲色图| 国产精品亚洲综合色区韩国| 亚洲电影在线| 精品成人一区二区| 亚洲影院色无极综合| 在线一区二区三区做爰视频网站 | 亚洲国产综合在线看不卡| 国产三区二区一区久久 | 乱人伦精品视频在线观看| 性做久久久久久久免费看| 欧美日韩免费观看中文| 欧美激情欧美激情在线五月| 激情久久久久| 欧美在线视频在线播放完整版免费观看 | 亚洲国产福利在线| 国产亚洲a∨片在线观看| 亚洲一二三四久久| 亚洲一区二区在线视频| 欧美区在线播放| 亚洲国产欧美一区| 在线免费一区三区| 久久久久久**毛片大全| 久久久久国产一区二区三区| 国产精品入口尤物| 亚洲一级高清| 香蕉成人啪国产精品视频综合网| 国产精品久久久久久久久久久久| 亚洲欧洲一区二区在线播放| 日韩视频免费看| 欧美激情麻豆| 亚洲黄色影院| 在线视频一区二区| 午夜精品一区二区三区在线视| 国产日韩av高清| 欧美日韩在线一区二区三区| 奶水喷射视频一区| 亚洲高清av在线| 欧美电影免费观看高清| 亚洲国产婷婷香蕉久久久久久99 | 午夜精品久久久久99热蜜桃导演| 亚洲欧美久久久| 国产麻豆精品theporn| 亚洲专区一区二区三区| 久久gogo国模裸体人体| 国产亚洲精品自拍| 久久久精品国产免大香伊| 欧美大片第1页| 国产精品第2页| 欧美在线观看天堂一区二区三区 | 一区二区欧美在线观看| 欧美网站在线观看| 小辣椒精品导航| 欧美激情91| 亚洲专区一二三| 国内在线观看一区二区三区| 亚洲美女视频在线观看| 久久久视频精品| 艳女tv在线观看国产一区| 国产农村妇女精品一二区| 久久久91精品国产一区二区精品| 亚洲电影第1页| 亚洲综合欧美| 亚洲国产精品久久| 欧美视频在线播放| 久久久久久久尹人综合网亚洲| 亚洲精品视频免费| 久久精品国产久精国产爱| 亚洲精品免费在线播放| 国产精品日韩精品| 欧美xart系列高清| 香蕉久久夜色精品国产使用方法| 亚洲成色www久久网站| 亚洲欧美日韩在线播放| 亚洲电影免费观看高清完整版在线观看 | 欧美中文在线观看国产| 亚洲日本久久| 蜜桃伊人久久| 久久成人在线| 亚洲一区在线观看视频| 亚洲国产一区二区a毛片| 国产精品一区二区在线观看| 欧美成人精品三级在线观看| 亚洲欧美日本伦理| 一本久道久久综合中文字幕| 欧美波霸影院| 久久久久久亚洲精品中文字幕| 亚洲小说欧美另类婷婷|