0

我需要一个可以培养两种孩子的主管。

第一个是主管孩子,和主管一样,我可以用和主管一样的模块开始一个孩子吗?

例如:

-module(test_sup).
-behaviour(supervisor).

-export([start_link/0]).
-export([init/1]).

start_link() ->
     supervisor:start_link({local,?MODULE}, ?MODULE, []).

init(_Args) ->
        RestartStrategy = {one_for_one, 10, 60},
        {ok, {RestartStrategy, 

        [{sup,
        {sup, start_link, []},
        permanent, infinity, supervisor, [sup]},

  ]}}.

在主管模块中,我用相同的模块初始化了一个孩子,这可能吗?

第二种孩子是普通工人,有自己的模块,这不是问题。但是我可以在主管模块中动态启动这两种不同的类型吗?

4

2 回答 2

1

在您的评论中,您说您想为遇到的每个子文件夹启动一个进程。OTP 为此创建了simple_one_for_one 主管。

在工作进程的 start_link 中,您可以提供希望进程索引的目录路径作为参数。

您可以查看我的全文搜索引擎教程,了解主管的工作示例simple_one_for_one

于 2013-06-23T08:40:58.057 回答
0

沃德的建议真的很好。你可以看看这个页面:LearYousomeErlang : the count of application,它有一个你应该使用的模式的完整示例

于 2013-06-24T04:48:02.163 回答