gpt4 book ai didi

erlang - 我如何告诉主管启动特定 gen_server 的 1000 个实例?

转载 作者:行者123 更新时间:2023-12-01 22:04:25 24 4
gpt4 key购买 nike

作为解决计算密集型任务的一部分,我希望有 1000 个 gen_servers 执行小任务并更新全局数据库。我怎样才能在 erlang OTP 中实现这个?在大多数例子中,监督者只监督一个 gen_server。一个监督者可以监督同一 gen_server 的一千多个实例吗?

例如假设我想找到一个极长数组的最大值,每个 gen_server 实例应该在数组的一部分上创建工作并更新全局最小值。

最佳答案

就像 Pascal 所说的那样,可以从一组数字或 child 开始,但您描述的用例可能会更好地使用 simple_one_for_one战略,因为所有的 child 都是一样的。这使您可以根据需要以更小的成本添加尽可能多的相同类型的 child 。 gen_servers 有开销,即使它不是太大,当你谈论 1000 个处理数字的进程时,它也会有所不同。

如果您的进程将做一些非常简单的事情并且您希望它很快,我会考虑不使用 gen_servers,而只是生成进程。为了获得真正的力量,您必须使用 spawn/4 在不同的节点上生成进程。使用更多的核心。如果您在不同位置使用机器,您还可以使用消息总线作为负载平衡器来在节点之间分配工作。一切都取决于您需要完成多少工作。

另请记住,Erlang 并不是处理数字的最佳选择。您可以使用 C 代码进行处理,并让您生成的每个 Erlang 进程/每个子进程调用一个 nif。 .

关于erlang - 我如何告诉主管启动特定 gen_server 的 1000 个实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52658850/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com