博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
erlang进程概念
阅读量:2058 次
发布时间:2019-04-29

本文共 1296 字,大约阅读时间需要 4 分钟。

 接触erlang以后,考虑的最多的应该就是何时创建一个进程,那么这个进程到底是什么,该如何思考这个问题,如果大学四年你从来都没有好好的学习操作系统或者说从来没有认真的学习哪一门语言,那么你对进程和线程之间的知识一定是很模糊的,外加上工作以后接触erlang很多,那么到头来你将深陷于其中很难分辨所谓的。

       我们先来看看系统中我们如何来定义一个进程——打开我们资源管理器

        我们看到如下的一些正在运行的执行文件,也就是所谓的exe文件,打开linux的命令行输入top你也一样可以看到相应的资源占用情况,那么这些就是我们所谓的系统进程,那么所谓的线程呢,他是程序在处理逻辑上的原子单位,可以说一个进程可以包含很多的线程

       erlang的进程一定少不了pid,无论线程怎么被创建都会生成一个pid,那么系统的进程也是一样,包括一些轻量级的进程系统生成的线程也会存在pid例如linux系统,这些系统进程的pid是有系统分配的,然而erlang则不然,我们打开我们的erlang节点观察erlang的进程树信息

 
        这里我们看到了一个kernel  erlang实现的独立内核,这个内核实际上是在erlang的虚拟集中运行的,你可以看到内核监督者kernel_sup,其实我们的进程就是有kernel来完成创建和分配pid的!

       区别

     说到这里你一定会问,说这些有什么用呢?

       如果你够细心,你一定会发现erlang开发的游戏是会有成百上千个进程一起完成操作的,每一个玩家是一个进程,有的时候几千个玩家在同一个线,这个时候也就意味着有更多于玩家的erlang进程存在与系统中!

      真正的系统进程是不存在这种可能的,依照现在的硬件设施,一个服务器上跑几千个进程那是非常可怕的,因为系统的进程被创建以后会出现资源占用的问题,这个时候系统就要做很多的处理,也就是我们说的系统调度,来处理进程之间的资源占用,即便是我们使用线程也是如此,这些由系统分配直接分配的资源直接进入cpu进行操作,外加玩家大量的信息交互代表的就是没有一个进程或者线程是闲置的,那么调度就更不可能了!

       那么erlang是怎么实现这些操作的,简单来说erlang的进程是针对于erlang自身来讲的,在我看来,这些进程的pid和内存都是有erlang的内核来分配,所以这和系统挂不上钩,更像是一个线程中的列表或者数组,erlang的并发原语只是形式上的和系统的并发原语类似,归根结底,也只不过是一个处理池一类的东西,根据pid来进行数组的创建和更新,这个时候根据pid来进行的更新就不会出现数据失真的情况!而且不管我们创造多少个数组和列表,只要不超出内存范围,那么就根本不会影响系统本身的运行!(至于erlang进程中同步异步的问题,也可以根据一些锁操作来完成)(这些只是我对erlang进程的一个理解)!

       依次,我们在处理erlang的进程时更多关心的是同步异步的问题,我们从来不会去深究里面的锁操作和

资源占用的问题,因为这些内核已经帮我们自主完成了 ,所以针对于并发操作java和c的程序猿要付出更多的劳作和思考,而erlang的开发这就会很轻松!

      

转载地址:http://uxxlf.baihongyu.com/

你可能感兴趣的文章
如何在 Linux 上自动设置 JAVA_HOME 环境变量
查看>>
MSSQL复习笔记
查看>>
Spring基础知识汇总
查看>>
Chrome扩展插件
查看>>
log4j.xml 日志文件配置
查看>>
如何删除MySql服务
查看>>
BAT Java和Rti环境变量设置
查看>>
NodeJs npm install 国内镜像
查看>>
python3.5.2 mysql Exccel
查看>>
mysqlDump 导出多表,其中部分表有限制数据内容
查看>>
vi 替换方法
查看>>
BAT 相关
查看>>
ANT集成SVNANT访问SVN(Subversion)
查看>>
高可用架构-- MySQL主从复制的配置
查看>>
jvm调优-从eclipse开始
查看>>
构建微服务:Spring boot 入门篇
查看>>
jvm调优-命令大全(jps jstat jmap jhat jstack jinfo)
查看>>
Spring boot Myibatis
查看>>
spring boot(七):springboot+mybatis多数据源最简解决方案
查看>>
Spring Boot 笔记
查看>>