《Erlang程序设计》第8章习题2

编写一个环形基准测试,在一个环中创建N个进程,然后沿着环发送一条消息M次,最后总共发送M*N条消息。在N和M的不同取值下测试整个过程消耗时间。

[cc lang="erlang"]
-module(ex2).
-export([start/2]).

start(N,M)->
statistics(runtime),
statistics(wall_clock),
L=create(N),
post(L,M),
{_,Time1} = statistics(runtime),
{_,Time2} = statistics(wall_clock),
io:format(“total time: ~p(~p)ms~n”,[Time1,Time2]).

create(N)->
create(N,[]).

create(0,L)->
L;
create(N,L)->
Pid=spawn(fun loop/0),
create(N-1,[Pid|L]).

loop()->
receive
cancel->
void
end.

post(_,0)->
void;
post(L,M) ->
[A ! canel ||A<-L],
post(L,M-1).
[/cc]

  1. No comments yet.

  1. No trackbacks yet.