並行與並發編程學習心得

來源:互聯網
上載者:User

最近一直在學習並行與並發相關的東西,從用CCR戶手冊到erlang論文,從Channel 9的視頻到MSDN的文章到,略有心得拿出來分享一下:

就像多任務作業系統中一個進程不能直接存取(OK,起碼是不能很輕鬆的訪問)另外一個進程的記憶體

思路

分離非同步作業的執行方法和資料提供。一個有意義的程式執行需要兩個部分:代碼和資料。如果代碼得到了資料之後就可以去執行了,能夠並存執行的代碼中,共用的資料越少越好,共用資料越少,需要鎖定的地方就越少,效率提高,出錯的可能降低。erlang中甚至要求兩個不同的進程之間只能通過訊息傳遞資料。

CCR使用Port來進行訊息傳遞。port是將資料傳遞給代碼的載體。當資料被投遞到port中,port會根據元素類型將之和port上綁定的處理函數結合在一起組成一個Task,然後放入DispatcherQueue中等待執行。

 

 

並行與並發

並發與並行為啥重要有啥好處就不再多說了。談談並發與並行編程中常見的問題和困難吧。

  • 共用記憶體:傳統的處理方式中,往往需要在多個並行的線程中共用資料,這是一個很容易出錯的地方。鎖的多了效能差,鎖的少了更加可能會導致程式運行出現莫名其妙的問題。無論是CCR還是erlang,對這個問題的解決辦法都很直接,避免使用共用記憶體,erlang更加嚴格,
  • 多個線程之間的同步:並發啟動並執行多個線程之間往往是有關係的
  • 錯誤處理:如何找到錯誤的上下文,如何處理多個並行作業中部分成功部分失敗的情況,都是
單元測試

 

 

單元測試之外的問題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.