You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
20 lines
487 B
Erlang
20 lines
487 B
Erlang
%% A process whose only job is to keep a counter.
|
|
%% First version
|
|
-module(counter).
|
|
-export([start/0, codeswitch/1]).
|
|
|
|
start() -> loop(0).
|
|
|
|
loop(Sum) ->
|
|
receive
|
|
{increment, Count} ->
|
|
loop(Sum+Count);
|
|
{counter, Pid} ->
|
|
Pid ! {counter, Sum},
|
|
loop(Sum);
|
|
code_switch ->
|
|
?MODULE:codeswitch(Sum)
|
|
% Force the use of 'codeswitch/1' from the latest MODULE version
|
|
end.
|
|
|
|
codeswitch(Sum) -> loop(Sum). |