【发布时间】:2012-05-11 18:47:48
【问题描述】:
以下示例代码来自 Joe Armstrong 的 Programming Erlang 书籍:
max(N) ->
Max = erlang:system_info(process_list),
io:format("Maximum allowed processes:~p~n",[Max]),
statistics(runtime),
statistics(wall_clock),
L = for(1, N, fun() -> spawn(fun() -> wait() end) end),
{_, Time1} = statistics(runtime),
{_, Time2} = statistics(wall_clock),
lists:foreach(fun(Pid) -> Pid ! die end, L),
U1 = Time1 * 1000 / N,
U2 = Time2 * 1000 / N,
io:format("Process spawn time=~p (~p) microseconds~n",
[U1, U2]).
我的问题是处理 Erlang 基础知识。看起来乔使用for() 来生成进程,然后使用lists:foreach 来终止它们。有理由使用其中一个吗?为什么不再次使用 for() 来遍历生成的进程列表并向它们发送 die 消息?这里有我遗漏的效率优化吗?
【问题讨论】:
标签: erlang