Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Elixir DynamicSupervisor按名称获取孩子_Elixir_Otp - Fatal编程技术网

Elixir DynamicSupervisor按名称获取孩子

Elixir DynamicSupervisor按名称获取孩子,elixir,otp,Elixir,Otp,在DynamicSupervisor模块中,我们有一个名为start\u child的函数,它注册并启动一个子项。我的问题是:以后我如何才能按名称找到特定的子进程,因为例如,进程。whereis函数只使用atom作为参数,我不想用atom命名子进程,我将它们命名为元组,例如,没有通用的解决方案。您有两个选项来管理此项 如果您的所有子模块DynamicSupervisor都是不同的模块,请使用列出子模块,并根据模块名称匹配最后一个参数 否则,您应该使用tuple为您的孩子命名,并维护自己的替代注册

DynamicSupervisor
模块中,我们有一个名为
start\u child
的函数,它注册并启动一个子项。我的问题是:以后我如何才能按名称找到特定的子进程,因为例如,
进程。whereis
函数只使用atom作为参数,我不想用atom命名子进程,我将它们命名为元组,例如,

没有通用的解决方案。您有两个选项来管理此项

如果您的所有子模块
DynamicSupervisor
都是不同的模块,请使用列出子模块,并根据模块名称匹配最后一个参数


否则,您应该使用tuple为您的孩子命名,并维护自己的替代注册表以查找孩子。

您可以使用

在上面的示例中,您可以用您的子模块替换
Agent

{:ok, _} = Registry.start_link(keys: :unique, name: Registry.ViaTest)
name = {:via, Registry, {Registry.ViaTest, "my_child_name"}}
{:ok, _} = Agent.start_link(fn -> 0 end, name: name)
Agent.get(name, & &1)
#=> 0
Agent.update(name, &(&1 + 1))
Agent.get(name, & &1)
#=> 1

Registry.lookup(Registry.ViaTest, "my_child_name")
#=> [{self(), nil}]

本例使用字符串作为键(
“我的孩子的名字”
),但它可以是元组之类的任何长生不老药术语。

复制粘贴长生不老药文档的原因是什么?