【发布时间】:2015-02-28 03:10:18
【问题描述】:
这是避免竞争条件的方法吗?
-module(b).
-export([my_spawn/1]).
my_spawn(Func) ->
Pid = spawn(listener()),
Pid ! {self(), spawn, Func},
receive
{From, Desired_Pid} -> Desired_Pid
end.
listener() ->
receive
{From, spawn, Func} ->
{Pid,Ref} = spawn_monitor(Func),
From ! {self(), Pid},
receive
{'DOWN',Ref, process, _, _} -> io:format("I lived for [calculated how long i lived]")
end
end.
我想在这里实现的是
A = spawn(proc),
monitor(process,A).
但是 A 可能会在第二行执行之前死掉。
【问题讨论】:
标签: erlang race-condition