2. 对异步IO的态度不同
3. 消息机制不同
4. Erlang对锁非常反感,认为变量不可变可以很大程度避免锁而Golang的观点是锁确实有很大的负担,但锁基本上是无法避免的,一旦有人共享状态并且互相抢占去改变他,这时候锁是必须存在的。
Erlang服务器是单进程的,是逻辑上没有并发的东西,一个Process就是一个执行体,所以Erlang的服务器和Golang的服务器是不一样的,Golang的服务器是多进程的一起构成的一个服务器,每个请求建立一个独立的进程。
而Erlang不同,一个服务器就是一个单进程的,所以并发的请求都进入到了进程的邮箱,然后这个服务器从进程邮箱里取邮件处理,Erlang的服务器并没有并发的请求,所以不需要锁。
1、erlang有异常成熟、经过电信级别大规模验证的OTP应用库,只需要很简单的代码就能建立起异常稳定、容错性强、扩展性强、高并发的服务器框架,这也是erlang最宝贵的核心价值所在。2、erlang是 天生的并发语言 : erlang的并发特性是语言级别的,从开发伊始就采用了CSP并发模式, 以进程为单位,进程间没有共享内存,变量不可变的实现方式保证了无锁的并发模型,因此也是异常高效的,换句话说:你只要像平常一样写代码就能并发,完全不用操心任何底层实现,你的代码能完美的并行运行在多核服务器上,如果你能写出漂亮的并发级别的算法和代码(尽量少的顺序代码),那在32核机器上就能跑出32倍性能!!!! Go 语言的并发模型也是取经于Erlang,但是我认为Erlang的并发模型更优秀,因为进程间完全没有共享内存,完全无锁。
3、由于Erlang和Go都是非常棒的语言,这里就出现一个问题:二选其一还是物尽其用?经过深思熟虑后,我和团队选择了后者。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)