GenServer
def start_link do
GenServer.start_link(__MODULE__, [])
end
def add_message(pid, message) do
GenServer.cast(pid, {:add_message, message})
end
def get_messages(pid) do
GenServer.call(pid, :get_messages)
end
# SERVER
def init(messages) do
{:ok, messages}
end
def handle_cast({:add_message, new_message}, messages) do
:timer.sleep(4_000)
{:noreply, [new_message | messages]}
end
def handle_call(:get_messages, _from, messages) do
{:reply, messages, messages}
end
end
{:ok, pid} = TestGen.start_link
TestGen.get_messages(pid)
[]
TestGen.add_message(pid, "asd")
:ok
TestGen.get_messages(pid)
# ВОТ ТУТ 4 СЕКУНДЫ СТОИМ
["asd"]
какого хуя так работает? я думал что get_messages вообще поебать на весь мир(
вот был вопрос
Обсуждают сегодня