erlang和golang的区别

互联网 19-12-2

Erlang和golang的区别:

第一对锁的态度不同,第二对异步IO的态度不同,第三消息机制不同。Erlang对锁非常反感,认为变量不可变可以很大程度避免锁。

Golang的观点是锁确实有很大的负担,但是锁基本上是无法避免的,一旦有人共享状态并且互相抢占去改变他,这时候锁是必须存在的。 (推荐学习:go)

Erlang服务器是单进程的,是逻辑上就没有并发的东西,一个Process就是一个执行体,所以Erlang的服务器和golang的服务器不一样,golang的服务器是多进程的(goroutine)一起构成的一个服务器。每个请求建立一个独立的进程(goroutine)。

但是Erlang不同,一个服务器就是一个单进程的,所有的并发请求都进入到了进程邮箱,然后这个服务器从进程邮箱里取邮件(请求的内容)处理,Erlang的服务器并没有并发的请求,所以不需要所锁。

Erlang的高并发实现:

第一:每个Erlang的物理进会有很多的服务器,每个服务器是互相无干扰的,他们可以并发。

第二是单服务器高并发使用的是异步IO。

go认为何时都不应该有异步IO的代码,Erlang则是在异步IO的基础上加上轻量级进程模型的混杂。

Golang对并发的支持:

第一:价值回归,golang最重要的事情是让执行成本降低,golang的栈最小可以到4K。

第二:把执行体作为语言内建的标准设施(golang的代码风格只有标准化得一种)。go得并发模型是最古老的并发模型,该并发模型包括,routine,原子操作,互斥体,同步,消息,同步IO。

以上就是erlang和golang的区别的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: golang
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:docker为什么用golang开发

相关资讯