Erlang---注册进程

如果想给一个进程发消息,就需要知道它的PID,但是当进程创建时,只有父进程才知道它的PID。系统里没有其他进程知道它的存在。这通常很不方便,因为你必须把PID发送给系统里所有想要和它通信的进程。另一方面,这也很安全。如果不透露某个进程的PID,其他进程就无法以任何方式与其交互。
Erlang有一种公布进程标识的方法,它让系统里任何进程都能与该进程通信。这样的进程被称为注册进程。管理注册进程的内置函数有四个。下面简要介绍register,
-module(area_server0).
-export([loop/0]).
loop()->
receive
{rectangle,Width,Ht}->
io:format(“Area of rectangle is pn”,[WidthHt]),
loop();
{Square,Side}->
io:format(“Area of square is pn”,[Side
Side]),
loop()
end.
在这里插入图片描述
可以用register来制作一个模拟时钟的注册进程。
-module(clock).
-export([start/2,stop/0]).
start(Time,Fun)->
register(clock,spawn(fun()->tick(Time,Fun) end)).
stop()->clock!stop.
tick(Time,Fun)->
receive
stop->
void
after Time ->
Fun(),
tick(Time,Fun)
end.
在这里插入图片描述
这个时钟会不断滴作响,直到你调用clock的停止命令为止
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值