erlang的进程字典

语法
@spec put(Key,Value) ->OldValue.
@spec get(Key)->Value.
@spec get()->[{Key,Value}].
@spec get_keys(Value)->[Key].
@spec erase(Key)->Value.
@spec erase()->[{Key,Value}].

时间: 2024-12-15 16:56:25

erlang的进程字典的相关文章

关于erlang中的进程字典(process dictionary)的新理解及其访问速度 (copy来的)

之前对于erlang的进程字典了解的不够清楚,只是知道put().get()函数,即存值和取值,而每个put.get中都有自己的一对Key--Value(键值对)与之对应.一个Key对应一个Value.在erlang中,启动进程节点之后,进程字典的put.get的值是对缓存的处理,而对数据库的操作,相当于是对硬盘的一个操作,可以理解成是一个数据的备份. 举个简单的例子:在游戏中都有好友操作,启动服务之后,玩家点击添加好友操作,进程的节点已经开启,先从内存中获取玩家的进程字典的Value的值,这里

erlang监控进程在启动进程退出后异常退出原因分析

一.问题引出 erlang监控进程在启动时设置了trap_exit为true,即会捕获到退出信号,会将退出信号转换为{'EXIT',Pid,Reason}存入自己的邮箱中,因此与监控进程link关系的进程退出后,监控进程能够很坦然的截获退出信号,自身不退出.启动erlang监控进程的进程,会和监控进程建立link关系,然而当启动进程退出时,监控进程没有象正常的情况,发生了异常退出,为什么设置了trap_exit为true,还会退出呢? 二.原因分析 查看supervisor的源码,supervi

[Erlang]link进程信号详解

原创文章,转载请注明出处:服务器非业余研究http://blog.csdn.net/erlib 作者Sunface 联系邮箱:[email protected] 估计很多同学都会对link时各种信号及捕捉机制有点迷糊,我这边在画一个表格,特分享给大家 Reason Trapping exits (trap_exit = true) Not trapping exits (trap_exit = false) normal Receives {'EXIT', Pid, Normal} Nothin

erlang链接进程之间的关系

1.process_flag(trap_exit,false),是默认行为:   “A进程”和“B进程”相互链接,(1)如果“A进程”异常退出“B进程”也随之退出:(2)如果“A进程”正常退出,“B进程”不做任何处理,继续运行.2.process_flag(trap_exit,true):  “A进程”和“B进程”相互链接,“B进程”设置了process_flag(trap_exit,true),这样“B进程”接受到“A进程”的退出信号,并自行处理. 捕获进程退出的编程模式: 模式一:我不在乎创

为什么我要选择erlang+go进行服务器架构

服务器非业余研究http://blog.csdn.net/erlib 作者Sunface 估计很多同学看到这里都会觉得迷惑,go的大名已经如雷贯耳了,但是erlang?这个东东是神马?难道是编程语言?怎么从来没听说过. 这里请允许我先介绍一下使用Erlang开发的比较有名的应用: 一:whatsapp 只凭32个技术人员,如何应付4.5亿的用户?对于刚刚被Facebook用190亿美元收购的WhatsApp来说,答案是Erlang--一种诞生于上世纪80年代的编程语言,终于在此时走到了聚光灯下.

Erlang 101 Erlang环境和顺序编程 - should done in 2014-10-26

笔记系列 Erlang环境和顺序编程 Erlang并发编程 Erlang分布式编程 Yaws Erlang/OTP 前言 拖了很久很久了,终于快忘的差不多了. Agenda 0 范围 环境 Erlang运行时环境.Emacs开发环境 顺序编程 数据结构 语法 1 Erlang环境搭建 Erlang website http://www.erlang.org/ 实践版本 otp_win32_R16B/erl5.10.1 安装路径记为ERLANG_HOME=D:/erl5.10.1 获取环境变量的方

从erlang时间函数说到时间校正体系

很多人会注意到这个问题,erlang提供了2个时间函数,erlang:now() 和 os:timestamp().用法一样,都是返回当前的时间.具体时间是从1970年1月1日零时算起,到现在经过的时间,结果为{MegaSecs, Secs, MicroSecs}. 这两个函数有什么区别? os:timestamp() 获取到的时间为操作系统的时间,不做任何修正:而erlang:now(),每次获取都会确保生成了唯一的时间,就是说,erlang:now()在实现上对时间做了一个校正,每次都生成一

erlang的随机数 及 random:uniform()函数

erlang的随机数是一个常用的东西,random:uniform()函数,如果在一次调用中,它会生成不同的随机数,但如果是多个不同的进程调用,则它的结果随机数是一致的(多个进程相同位置比较). 每次调用会更新进程字典里的random_seed变量,这样在同一个进程内每次调用random:uniform()时,随机数种子都不同,所以生成的随机数都不一样(调用完random:uniform()后,可以用get(random_seed)查看更新后的种子值). 但是如果是不同的进程分别调用random

[erlang]proc_lib源码浅析

源码位置位于安装目录的lib/stdlib/src下. 之前在使用gen_server时,由于之前自己实现过一个gen_server,因此对它内部的机制也能知道个七七八八,最近在用erlang的fsm模块,突然想读一读它得源码,这才突然发现erlang的源码内部还是做了很复杂的工作,尤其是有个"阴魂不散"的模块proc_lib. 无论是gen_server也好,gen_fsm也好,实际上在start的时候,都是调用的底层gen模块的start/start_link函数,由start函数