Elixir 如何从主管并发生成多个进程?

Elixir 如何从主管并发生成多个进程?,elixir,Elixir,我一直试图通过更改参数和id从我的主管模块启动同一模块的多个进程。但是,我看到子进程是以顺序方式生成的 当使用spawn或spawn-link时,它工作得很好,但是我没有调用worker方法,进程也不会受到监督。 主管模块中是否有允许同时执行此操作的其他方法 当使用or时,它可以正常工作,但我不会调用worker方法,并且不会对流程进行监督 这里有很多问题。首先,我们在中没有方法,我们有函数。已弃用,不应使用。我们应该使用 当然,您可以借助于来监督已启动的流程(这里是一个如何核心的示例),但这并

我一直试图通过更改参数和id从我的主管模块启动同一模块的多个进程。但是,我看到子进程是以顺序方式生成的

当使用spawn或spawn-link时,它工作得很好,但是我没有调用worker方法,进程也不会受到监督。 主管模块中是否有允许同时执行此操作的其他方法

当使用or时,它可以正常工作,但我不会调用
worker
方法,并且不会对流程进行监督

这里有很多问题。首先,我们在中没有方法,我们有函数。已弃用,不应使用。我们应该使用

当然,您可以借助于来监督已启动的流程(这里是一个如何核心的示例),但这并不是您真正想要做的

重初始化应该放在工作人员的回调中。这样,它将在流程中执行,您的初始化将立即返回;实际上,这将是某种“并发”加载,但进程仍然是按顺序排列的,因此更容易处理

当使用or时,它可以正常工作,但我不会调用
worker
方法,并且不会对流程进行监督

这里有很多问题。首先,我们在中没有方法,我们有函数。已弃用,不应使用。我们应该使用

当然,您可以借助于来监督已启动的流程(这里是一个如何核心的示例),但这并不是您真正想要做的


重初始化应该放在工作人员的回调中。这样,它将在流程中执行,您的初始化将立即返回;实际上,它可能是某种“并发”加载,但进程仍然是按顺序排列的,因此更容易处理。

否。Elixir(和Erlang)代码是按顺序运行的。如果主管要同时启动其子级,则需要启动其他流程来启动员工。梁上的进程很便宜,但我确信启动
GenServer
(或任何行为)比启动进程来启动其他进程更快。您还必须考虑不同的重启策略。例如,
rest\u For_one
策略用于流程需要按特定顺序启动(和重新启动)时。因此,在这种情况下,并发实际上是最基本的。在浏览文档时,我发现所有的行为模块都是裸流程的抽象。现在可以使用
spawn
并行生成裸进程,但是
GenServer
中的
start\u link
方法是顺序的。我想知道为什么没有并行启动流程的方法。“Supervisor模块中是否有其他方法允许同时启动?”-您的问题是是否可以。不是你为什么不能。为什么不能这样做,是因为主管会调用
start\u link
,这样它就有一个到流程的链接,这样它就可以知道流程何时崩溃,并相应地重新启动。如果它与这个过程没有联系,它就不会监督它。Elixir(和Erlang)代码按顺序运行。如果主管要同时启动其子级,则需要启动其他流程来启动员工。梁上的进程很便宜,但我确信启动
GenServer
(或任何行为)比启动进程来启动其他进程更快。您还必须考虑不同的重启策略。例如,
rest\u For_one
策略用于流程需要按特定顺序启动(和重新启动)时。因此,在这种情况下,并发实际上是最基本的。在浏览文档时,我发现所有的行为模块都是裸流程的抽象。现在可以使用
spawn
并行生成裸进程,但是
GenServer
中的
start\u link
方法是顺序的。我想知道为什么没有并行启动流程的方法。“Supervisor模块中是否有其他方法允许同时启动?”-您的问题是是否可以。不是你为什么不能。为什么不能这样做,是因为主管会调用
start\u link
,这样它就有一个到流程的链接,这样它就可以知道流程何时崩溃,并相应地重新启动。如果它与这个过程没有联系,它就不会监督它。这真的很有帮助。谢谢这真的很有帮助。谢谢