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).
|