From fa3e9e8cbda9b5e91fd3aee460e83cf98517d94d Mon Sep 17 00:00:00 2001 From: Nathan Long Date: Tue, 25 Mar 2025 09:22:23 -0400 Subject: [PATCH 1/2] Add quick Registry example to GenServer docs --- lib/elixir/lib/gen_server.ex | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lib/elixir/lib/gen_server.ex b/lib/elixir/lib/gen_server.ex index 29bf11b440c..23c5196a170 100644 --- a/lib/elixir/lib/gen_server.ex +++ b/lib/elixir/lib/gen_server.ex @@ -271,6 +271,14 @@ defmodule GenServer do generated atoms won't be garbage-collected. For such cases, you can set up your own local registry by using the `Registry` module. + For example: + + {:ok, _} = Registry.start_link(keys: :unique, name: :stacks) + name = {:via, Registry, {:stacks, "stack 1"}} + {:ok, _pid} = GenServer.start_link(Stack, "hello", name: name) + Registry.lookup(:stacks, "stack 1") + #=> [{#PID<0.150.0>, nil}] + ## Receiving "regular" messages The goal of a `GenServer` is to abstract the "receive" loop for developers, From f3392f510bd0be40837060c02c4f318263203b68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Sat, 5 Apr 2025 09:53:58 +0200 Subject: [PATCH 2/2] Update lib/elixir/lib/gen_server.ex --- lib/elixir/lib/gen_server.ex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/elixir/lib/gen_server.ex b/lib/elixir/lib/gen_server.ex index 23c5196a170..6c4498b029e 100644 --- a/lib/elixir/lib/gen_server.ex +++ b/lib/elixir/lib/gen_server.ex @@ -276,8 +276,8 @@ defmodule GenServer do {:ok, _} = Registry.start_link(keys: :unique, name: :stacks) name = {:via, Registry, {:stacks, "stack 1"}} {:ok, _pid} = GenServer.start_link(Stack, "hello", name: name) - Registry.lookup(:stacks, "stack 1") - #=> [{#PID<0.150.0>, nil}] + GenServer.whereis(name) + #=> #PID<0.150.0> ## Receiving "regular" messages