0

生成されたすべてのプロセスがアイドル状態にあるか、何もしていないかを知りたいです。だから私は、1000個のerlangプロセスを生成するこの特定の例を持っていますproc/3

proc(A,B,C) ->
    receive
        {do} ->
            NewA = % doing something
            NewB = % doing something
            NewC = % doing something
            % doing something
            % ...
            io:format("Process: ~w is done doing something.", [self()]),
            proc(NewA,NewB,NewC)
    end

[<0.33.0>,<0.34.0>,<0.35.0>,<0.36.0>...<0.1032.0>]

{do}現在、これらの各プロセスは、他のプロセスと同時にステートメントを実行するように指示するメッセージを受け取ります。すべてのプロセスの実行が完了したのか、単にアイドル状態になったのかをどのように知ることができますか?

4

1 に答える 1

2

私はこの問題を抱えていました.doメッセージの送信を担当するプロセスにメッセージを送り返すことで解決しました。私の場合、答えの数を数えるだけで済みました。

proc(A,B,C,From) ->
    receive
        {do} ->
            NewA = % doing something
            NewB = % doing something
            NewC = % doing something
            % doing something
            % ...
            io:format("Process: ~w is done doing something.", [self()]),
            From ! {job_done,self()},
            proc(NewA,NewB,NewC,From)
    end
于 2013-10-14T12:39:26.063 に答える