在.NET應用程式中進行Erlang風格的並行編程

來源:互聯網
上載者:User

Erlang能夠用來編寫高度可伸縮的並行應用程式,其中經常會出現數以百萬計的輕量級組件,這種類似於線程的組件被稱之為actor。不幸的是,這往往需要您使用Erlang這種相對神秘的程式設計語言重寫所有代碼。不過我們也有其他選擇,例如使用名不見經傳的CCR平台來進行開發,該平台由.NET機器人部門開發。

作為一種基於Actor的語言,Erlang通過Actor模型能夠實現高度並發性。在這個模型中,最基礎的並行單元不是線程或纖程(fiber) ,而是一種更為輕量級的東西。作為Erlang中的“進程”,每個並行單元在一個32位系統中只佔用大約1200位元組的基礎資源。與此相對的是,Windows作業系統中的每個線程預設會在棧上分配1MB空間,此外還需要額外的空間來作為簿記(Bookkeeping)和執行緒區域儲存。由於非常輕量,一個應用程式輕鬆支援百萬計的進程進行並發處理。

在任一時刻,大部分的進程處於空閑狀態。當一個進程接受到了一條訊息,運行平台將為其分配一個線程來應答這條訊息。一條應答可能會建立一個新的進程,向其他進程發送訊息,或者改變自身狀態。一旦訊息被處理之後,這個進程將會死亡,或者繼續等待下一條訊息。

訊息處理系統實現了高端的並行性和高效能。每條訊息都為非同步發送,使得進程之間相互高度獨立。平台能夠通過訊息來得知應該喚醒哪個進程。由於每個進程都能被任意的線程來處理,因此就可以大大減少耗費相對昂貴的環境切換操作。

聯繫我們

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