确定生成的所有erlang进程是否都是空闲的

确定生成的所有erlang进程是否都是空闲的,erlang,Erlang,我想知道我生成的所有进程是否都处于空闲状态,或者没有做任何事情。所以我有一个特别的例子,它产生了1000个proc/3 proc(A,B,C) -> receive {do} -> NewA = % doing something NewB = % doing something NewC = % doing something % doing something

我想知道我生成的所有进程是否都处于空闲状态,或者没有做任何事情。所以我有一个特别的例子,它产生了1000个
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
[,,…]


现在,这些进程中的每一个都会收到一条消息
{do}
,告诉它们与其他进程同时执行它下面的语句。我如何知道所有进程是执行完毕还是现在处于空闲状态?

我遇到了这个问题,我通过向负责发送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

当一个进程完成它的工作并变得空闲时,你能结束它吗?如果可以,可以使用监视器。不,进程必须保持活动状态。