Erlang总结

来源:互联网 发布:linux nc -4 -i 编辑:程序博客网 时间:2024/06/16 03:30

1.并行问题的一个例子

start() ->    case whereis(db_server) of         undefined ->            Pid = spawn(db_server, init, []), %(1)             register(db_server, Pid), {ok, Pid}; %(2)        Pid when is_pid(Pid) ->            {error, already_started}end.

假设有A和B两个进程并行地执行上述代码,当A执行完(1)时由于时间片用完而脱离运行。这时B获得运行机会,他执行完(2),然后CPU资源再次回到A。这时A要执行(2),而由于进程标识符为db_server的进程已在B中注册,此时不能注册第二次,于是出现运行时错误。

2. 有语句:spawn (test, init, []).则函数init必须export才能为spawn所用。<<

0 0
原创粉丝点击