打算在C++成立仿Erlang式的漫衍式并行机制
梳理了下需求,概略如下:
历程(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)。通用处事器架构实现了一套高靠得住的处事器模子。
大抵想象了下实现,已经根基有谱。