【发布时间】:2015-01-13 14:59:38
【问题描述】:
我想知道是否可以让子进程继续正常运行,直到它收到来自父进程的“死亡”消息。
这是子进程的代码。
-module(sensor).
-export([start/1]). % must also export function that will be spawned
%% create second thread, pass self() as argument so it knows how to reply
%% exchange messages with second thread until sum=0
start(SlaveNr) ->
%this part is not right. It waits for die and does nothing else
receive
die ->
io:format("slave ~p: received die~n", [SlaveNr])
end,
random:seed(now()),
Measurement = random:uniform(11),
if Measurement == 11 ->
exit(crash);
true->
io:fwrite("slave ~p Random # ~p~n",[SlaveNr, Measurement])
end,
Sleep_time = random:uniform(10000),
timer:sleep(Sleep_time),
start(SlaveNr).
如您所见,它没有正常执行。它只是等到它收到一个 die 消息。那么我怎样才能让它执行它的正常功能,直到它收到来自父进程的 die 指示所有子进程都应该退出?
【问题讨论】:
标签: concurrency erlang