在OTP simple_on_for_one主管中检查现有子级
||
我正在写一个地图/减少单词计数器来学习OTP。我创建了一个simple_one_for_one主管可以启动减速器。对于每个键,我想检查是否已经有一个孩子,如果没有,请让主管创建该孩子。
我目前在主管模块中启动子级,如下所示:
start_child(Key) ->
supervisor:start_child(?SERVER, [Key]).
我想做这样的事情(未经测试):
start_child(Key) ->
case supervisor:child_pid(Key) of
Pid -> Pid;
_ -> supervisor:start_child(?SERVER, [Key])
end.
找出是否已经有Key的孩子的一种好的OTP方法是什么?
没有找到相关结果
已邀请:
1 个回复
粳饶瓢部
一个simple_one_for_one主管。叫
确保您的主要主管在
之前开始
。
的状态可能是Key-> Pid对的字典。
然后将具有类似于
的功能,该功能要么在字典中找到键并知道相应的过程,要么找不到键并运行类似的功能:
只需将结果pid添加到您的状态,您就可以为下一次调用
做好准备。我建议阅读此书,以便更好地了解所有这些部分如何协同工作。如果要将这段代码放入生产环境中,则可能需要考虑以下内容: 流程死亡时会发生什么?提示:用
检查是否活泼。 如果
或
去世会怎样?