簡約語言:golang; CSP式的並行存取模型

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。用python開發也有幾年了,很喜歡它的簡潔。最近在看golang,感覺和python很像,文法簡潔,標準類型相識,標準庫也是一樣的豐富。引用一段文字(http://blog.csdn.net/myan/article/details/2028545):
所謂”魔幻語言“,主要代表作品有C++、Perl、Javascript和Ruby。這些語言擁有豐富的特性,聰明的技 巧和意想不到的奇效,永遠有發掘不完的奇技淫巧,總能找到讓人匪夷所思的”yet another way"。反過來,“簡約語言”崇尚清晰直接,夠用就行,要求從代碼容易理解,寧可笨一點、累一點、多寫一點代碼,反對出人意料的技巧,反對故弄玄虛。 C、PHP、Python和Lua這一派語言的代表作。

看來golang也是“簡約語言”。
之前一直使用python的微線程(協程,纖程)開發模式,對gevent和stackless都有一定的瞭解。由於python有GIL,實際開發中很少用到thread,這時對stackless中的channel使用有些不理解。為什麼多個微線程中需要用channel來通訊呢?微線程本身並非實際並發執行,完全可以用共用記憶體的方式來通訊。所以在之前使用python開發項目時,為了利用多核,項目的架構一般是:微線程+多進程模式。微線程使用共用記憶體的開發方式,的確比較簡單方便。
最近在學習golang時,看到很多golang資料中提到CSP( “通過通訊來共用記憶體,而非通過共用記憶體來通訊”的原則)。最初不甚理解,看了這篇資料(http://concur.rspace.googlecode.com/hg/talk/concur.html)後頓悟。文章中用簡單明了的圖示範了CSP和普通的共用記憶體方式實現的並行存取模型,golang中的goroutine是能在多個真實線程下執行的,從而達到了真正利用多核的目的。雖然開始對CSP有些感覺,不過如果要在實際項目中使用還會有很多細節需要考慮。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.