程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> 計劃在C++建立仿Erlang式的分布式並行機制

計劃在C++建立仿Erlang式的分布式並行機制

日期:2017/1/4 11:21:36      編輯:關於C++

梳理了下需求,大體如下:

進程(Process)。進程是Erlang中一個虛擬的運行單位。既不是操作系統的進程,也不 是線程,而是比線程更加輕量的單位,更接近於協程。

命名進程(NamedProcess)。命名進程的好處是,你可以向一個不知道進程ID的進程發送 消息。由於進程可能會宕掉(crash),進程ID可能會發生變化,所以在考慮了異常的環境下 ,命名進程降低了編碼的難度(你不再需要考慮進程crash檢測和重建連接的過程)。

進程郵箱(Mailbox)。每個進程都擁有一個自己的郵箱,其他進程發送消息到該郵箱, 而進程在合適的時機從中取出消息並處理之。

定時器(Timer)。這個是屬於最最基礎的模塊,用於多種用途,如超時檢測等。

消息編碼/解碼(encode/decode)。將進程的請求(sync/async的函數調用)encode為網 絡消息流,或將網絡消息流decode回進程的請求。

消息發送/接收(send/receive)。發送(send)指將消息(Message)發送到目標進程( Process)的進程郵箱(Mailbox)中。接收(receive)則從進程郵箱(Mailbox)取出消息 (Message)。接收可以有選擇性接收(selective receive),即按一定的匹配模式選擇要 接收的消息。

進程鏈接與監控(link/monitor)。當兩個進程鏈接時,一個掛掉後會通知另一個進程。

速錯(fail fast)。這關乎資源管理(Resource Management)與異常處理(Exception Handling)。Erlang的哲學是發生不可恢復的錯誤時就立即死掉。而進程的資源(如內存、 打開的文件等等)需要被自動釋放。

通用服務器(Server)。進程(Process)可能是一個普通的工作者(Worker),也可以 是服務器(Server)。通用服務器架構實現了一套高可靠的服務器模型。

大致想象了下實現,已經基本有譜。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved