хорошо я пытаюсь создать счетчик, используя код здесьErlang - почему новый процесс создается
-module(counter).
-export([start/0,loop/1,increment/1,value/1,stop/1]).
%% First the interface functions.
start() ->
spawn(counter, loop, [0]).
increment(Counter) ->
Counter ! increment.
value(Counter) ->
Counter ! {self(),value},
receive
{Counter,Value} ->
Value
end.
stop(Counter) ->
Counter ! stop.
%% The counter loop.
loop(Val) ->
receive
increment ->
loop(Val + 1);
{From,value} ->
From ! {self(),Val},
loop(Val);
stop -> % No recursive call here
true;
Other -> % All other messages
loop(Val)
end.
код, я использую в моем модуле есть (только для целей тестирования, так как я могу «т понять, почему он делает это):
test3() ->
Counter = counter:start().
Поэтому, когда я бегу test3, он создает новый процесс против с новым ПИД-регулятора. Почему это? Я просто пытаюсь использовать один счетчик
Но когда я назначаю идентификатор процесса счетчику, не должен ли он вызывать ошибку при следующем назначении счетчика другого ПИД-регулятора? Я не думал, что это возможно. Я явно недопонимаю здесь. Я тоже пробовал использовать регистр, но тогда, когда я регистрирую его как что-то/что-то (например: хлеб), он больше не функционирует. Я не могу позвонить: counter: increment (хлеб). , он просто застревает. – user1079404
Так что я мог бы использовать, зарегистрируйтесь (хлеб, счетчик: start()) И затем, чтобы увеличить его, используйте что-то вроде: хлеб! приращение. В этом случае – user1079404