1

これは完全に機能的な初心者の質問です。

私はいくつかのErlangを学ぼうとしており、メッセージパッシングを介してローカルの結果を親プロセスに報告する複数のプロセスが生成される(うまくいけば同時)モンテカルロシミュレーションを作成しました。

したがって、親プロセスには次のようなものがあります

parent(NumIterations, NumProcs) ->
    random:seed(),

    % spawn NumProcs processes
    lists:foreach(
        spawn(moduleName, workerFunction, [self(), NumIterations/NumProcs, 0, 0]),
        lists:seq(0, NumProcs - 1)),

    % accumulate results
    receive
        {N, M} -> ???; % how to accumulate this into global results?
        _      -> io:format("error")
    end.

生成されたプロセスから受け取ったすべての N と M を合計したいとしましょう。

値の累積は通常、関数型プログラミングでは再帰を介して行われることを理解していますが、受信ステートメント内でそれを行う方法..?

4

1 に答える 1