如果想给一个进程发消息,就需要知道它的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”,[SideSide]),
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的停止命令为止
Erlang---注册进程
最新推荐文章于 2023-08-15 15:56:49 发布