Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
33
Task/Singleton/Erlang/singleton-1.erl
Normal file
33
Task/Singleton/Erlang/singleton-1.erl
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
-module(singleton).
|
||||
|
||||
-export([get/0, set/1, start/0]).
|
||||
|
||||
-export([loop/1]).
|
||||
|
||||
% spec singleton:get() -> {ok, Value::any()} | not_set
|
||||
get() ->
|
||||
?MODULE ! {get, self()},
|
||||
receive
|
||||
{ok, not_set} -> not_set;
|
||||
Answer -> Answer
|
||||
end.
|
||||
|
||||
% spec singleton:set(Value::any()) -> ok
|
||||
set(Value) ->
|
||||
?MODULE ! {set, self(), Value},
|
||||
receive
|
||||
ok -> ok
|
||||
end.
|
||||
|
||||
start() ->
|
||||
register(?MODULE, spawn(?MODULE, loop, [not_set])).
|
||||
|
||||
loop(Value) ->
|
||||
receive
|
||||
{get, From} ->
|
||||
From ! {ok, Value},
|
||||
loop(Value);
|
||||
{set, From, NewValue} ->
|
||||
From ! ok,
|
||||
loop(NewValue)
|
||||
end.
|
||||
Loading…
Add table
Add a link
Reference in a new issue