当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Elixir Registry.values用法及代码示例


Elixir语言中 Registry.values 相关用法介绍如下。

用法:

values(registry, key, pid)
(自 1.12.0 起)
@spec values(registry(), key(), pid()) :: [value()]

registry 中为 pid 读取给定 key 的值。

对于唯一注册表,它可以是一个空列表,也可以是具有单个元素的列表。对于重复的注册表,它是一个包含零个、一个或多个元素的列表。

例子

在下面的示例中,我们注册当前进程并从自身和其他进程中查找它:

iex> Registry.start_link(keys: :unique, name: Registry.UniqueLookupTest)
iex> Registry.values(Registry.UniqueLookupTest, "hello", self())
[]
iex> {:ok, _} = Registry.register(Registry.UniqueLookupTest, "hello", :world)
iex> Registry.values(Registry.UniqueLookupTest, "hello", self())
[:world]
iex> Task.async(fn -> Registry.values(Registry.UniqueLookupTest, "hello", self()) end) |> Task.await()
[]
iex> parent = self()
iex> Task.async(fn -> Registry.values(Registry.UniqueLookupTest, "hello", parent) end) |> Task.await()
[:world]

这同样适用于重复的注册表:

iex> Registry.start_link(keys: :duplicate, name: Registry.DuplicateLookupTest)
iex> Registry.values(Registry.DuplicateLookupTest, "hello", self())
[]
iex> {:ok, _} = Registry.register(Registry.DuplicateLookupTest, "hello", :world)
iex> Registry.values(Registry.DuplicateLookupTest, "hello", self())
[:world]
iex> {:ok, _} = Registry.register(Registry.DuplicateLookupTest, "hello", :another)
iex> Enum.sort(Registry.values(Registry.DuplicateLookupTest, "hello", self()))
[:another, :world]

相关用法


注:本文由纯净天空筛选整理自elixir-lang.org大神的英文原创作品 Registry.values(registry, key, pid)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。