【发布时间】:2014-04-30 17:19:04
【问题描述】:
我在 erlang 中创建了一轮进程,并希望测量第一条消息通过网络和整个消息系列所花费的时间,每次第一个节点收到消息时,它会发送另一个消息。 现在在第一个节点我有以下代码:
receive
stop->
io:format("all processes stopped!~n"),
true;
start->
statistics(runtime),
Son!{number, 1},
msg(PID, Son, M, 1);
{_, M} ->
{Time1, _} = statistics(runtime),
io:format("The last message has arrived after ~p! ~n",[Time1*1000]),
Son!stop;
当然,我会在发送第一条消息时开始统计。 如您所见,我将 Time_Since_Last_Call 用于第一个消息循环并希望将 Total_Run_Time 用于整个运行,问题是 Total_Run_Time 是累积的,因为我第一次开始统计。 我想到的第二个想法是使用另一个带有 2 个接收循环的进程来获取每个添加它们并打印的时间,但我确信 erlang 可以做得比这更好。 我想解决这个问题的最好方法是以某种方式刷新 Total_Run_Time,但我找不到如何做到这一点。有什么想法可以解决这个问题吗?
【问题讨论】:
标签: concurrency erlang