8.11.1.编写一个函数start(AnAtom, Fun)来把spawn(Fun)的结果注册为AnAtom。当两个并行的进程同时执行到start/2函数时,要确保代码能够正常工作。也就是说,这两个进程其中一个成功执行,而另一个必须执行失败。
-module(section_8).
-compile(export_all).
start(AnAtom, Fun) ->
case whereis(AnAtom) of
undefined ->
register(AnAtom, spawn(Fun)),
io:format("register success ~n");
_ ->
io:format("register false ~n")
end.
create_process(AnAtom) ->
Fun = fun() ->
io:format("-----temp fun----~n")
end,
start(AnAtom, Fun),
start(AnAtom, Fun).