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


Elixir Registry.register用法及代码示例

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

用法:

register(registry, key, value)
(从 1.4.0 开始)
@spec register(registry(), key(), value()) ::
  {:ok, pid()} | {:error, {:already_registered, pid()}}

registry 中的给定 key 下注册当前进程。

还必须给出与此注册相关联的值。每当调度或进行键查找时都会检索此值。

此函数返回 {:ok, owner}{:error, reason}owner 是负责 PID 的注册表分区中的 PID。所有者会自动链接到调用者。

如果注册表具有唯一键,它将返回 {:ok, owner} ,除非该键已经与 PID 关联,在这种情况下它返回 {:error, {:already_registered, pid}}

如果注册表有重复键,则允许在同一键下从当前进程进行多次注册。

例子

在唯一注册表下注册不允许多个条目:

iex> Registry.start_link(keys: :unique, name: Registry.UniqueRegisterTest)
iex> {:ok, _} = Registry.register(Registry.UniqueRegisterTest, "hello", :world)
iex> Registry.register(Registry.UniqueRegisterTest, "hello", :later)
{:error, {:already_registered, self()}}
iex> Registry.keys(Registry.UniqueRegisterTest, self())
["hello"]

但是,对于重复的注册表,这是可能的:

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

相关用法


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