gpt4 book ai didi

Erlang 使用 for() 与列表 :foreach

转载 作者:行者123 更新时间:2023-12-02 03:41:51 26 4
gpt4 key购买 nike

以下示例代码来自 Joe Armstrong 的《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 基础知识。看起来 Joe 使用 for() 来生成进程,然后使用 lists:foreach 来终止它们。有理由使用其中一种而不是另一种吗?为什么不再次使用 for() 来迭代生成的进程列表并向它们发送一条 die 消息?我是否缺少这里的效率优化?

最佳答案

lists:foreach 可以让您省去提前确定列表长度并将其指定为参数的麻烦。 for 调用需要知道创建列表需要多长时间,因此这是必要的。 for() 通常用作没有更合适的情况下的最后手段。

关于Erlang 使用 for() 与列表 :foreach,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6656784/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com