首页 > Erlang并发教程 > 10.10 Erlang并发编程-进程字典
2013
11-19

10.10 Erlang并发编程-进程字典

BACK TOP文章索引

  1. 进程字典
  2. 共9条评论

进程字典

每个进程都拥有一个字典。通过下列BIF可以操作该字典:

put(Key, Value)

将与键Key相关联的新值Value加入进程字典。若与Key相关联的值已经存在则该值将被删除并被新值Value替代。该BIF返回原先与Key关联的值,若原先没有值与Key相关联,则返回undefinedKeyValue可以是任意的Erlang项式。

get(Key)

返回进程字典中与Key关联的值。若没有值与Key相关联则返回undefined

get()

{Key, Value}元组列表的形式返回整个进程字典。

get_keys(Value)

返回一个列表,包含进程字典中值为Value的所有的键。

erase(Key)

返回整个进程字典后将至删除。

对于各个进程而言进程字典是局部的。进程刚被创建时进程字典为空。任何函数都可通过调用put(Key, Value)向字典中添加{Key, Value}键值对,而后再通过调用get(Key)取出。在catch作用域内,若在调用put后调用throw或出现错误,放入字典的值不会被撤回。

借助get()erase()可以获取或删除整个字典。删除单个条目可用erase(Key)

有时候我们希望在多个不同函数中访问同一块全局数据,而将之作为进程中所有函数的参数来进行传递又不太方便。小心使用putget就可以避免这个问题。

getset在语言中引入了破坏性操作,令程序员写出具有副作用的函数。这些函数的调用结果可能跟它们的调用次序相关。对进程字典的使用应该非常小心getset就好比传统命令式语言里的gotogetset在某些特定场景下很有用,但使用它们会造成不清晰的代码,应该尽可能地避免使用。鉴于不鼓励使用进程字典,本书的所有程序都不使用进程字典——为了内容完整,只在此处和附录中包含相关内容。


10.10 Erlang并发编程-进程字典》有 9 条评论

  1. Pingback 引用通告: 钢格板

  2. 听说将来最大的灾难是瘟疫,我认为没必要造那东西,内心的平和与强大才是关键,若不论哪种灾难,真发生了,你那东西能消除你内心的恐惧吗?还是另想出路吧!

  3. 听说将来最大的灾难是瘟疫,我认为没必要造那东西,内心的平和与强大才是关键,若不论哪种灾难,真发生了,你那东西能消除你内心的恐惧吗?还是另想出路吧!

  4. Pingback 引用通告: 不锈钢窗纱

  5. Pingback 引用通告: 边坡防护网

  6. Pingback 引用通告: pvc护栏

  7. Pingback 引用通告: 玻璃钢格栅

  8. Pingback 引用通告: 勾花网

  9. 担心很有道理啊,以后但凡有一点儿群体事件,比如抗拆什么的,给你扣一个恐怖主义的大帽子,想怎么整都有法律依据。

留下一个回复

你的email不会被公开。