Erlang收到之后

时间:2016-12-10 17:47:26

标签: parallel-processing erlang timeout wait

我在Erlang的功能工作后遇到问题,我已经用谷歌搜索了一段时间并反对这一点,但似乎无法弄明白并且需要一些帮助。我有一个进程,它运行以下过程并等待消息。

% Waits for messages, and puts them into the list. 
% If the list has the same length as the Length variable 
% which is the original provided list, then it means we are done
% and can print the results.
% If the MaxTime has passed it should just print the provided list.
wait_max_time(List, Length, MaxTime) ->
io:format("I am ~p and waiting...~n", [self()]),
receive
    X -> 
        Results = List ++ [X],
        case length(Results) =:= Length of
            true -> 
                io:format("~p~n", [Results]),
                exit(self());
            false -> 
                wait(Results, Length)
        end
after MaxTime -> io:format("List is ~p~n", [List])
end.

后面的所有内容似乎都运行正常,它总是在计算,我已经用打印语句确认了它。

但是对于花费太长时间的计算,我只想打印它得到的列表而不是继续。但是在我的代码中永远不会运行之后,我做错了什么?

1 个答案:

答案 0 :(得分:0)

正如Dogbert在评论中指出的那样,我完全错过了我忘记在false下更改一个函数的名称,这个函数调用了另一个没有超时的函数。

问题解决了,谢谢。