Desenvolva um módulo Erlang que implemente um sistema distribuído, que resolva a seguinte expressão:
(2x + 0,5y)!
-module(exercicio4). -export([start/2,p1/1,p2/1,p3/1,p4/1]).
start(X,Y) -> P4=spawn(exercicio4,p4,[self()]), P3=spawn(exercicio4,p3,[P4]), P2=spawn(exercicio4,p2,[P3]), P1=spawn(exercicio4,p1,[P3]),
P1!X,
P2!Y,
receive
Result when number(Result) -> ok
end,
io:format("Resultado: ~w.~n",[Result]).
p1(P3) -> receive X when number(X) -> ok end, A = 2*X, P3 ! A.
p2(P3) -> receive X when number(X) -> ok end, B = X div 2, P3 ! B.
p3(P4) -> receive A -> ok end, receive B -> ok end, C=A+B, P4 ! C.
p4(PidStart) -> receive C -> ok end, Result=factorial(C), PidStart ! Result.
factorial(0) -> 1; factorial(N) -> N*factorial(N-1).
Última actualização: 17-05-2000