gpt4 book ai didi

erlang - 在Erlang中,gen_server :start() and gen_server:start_link()?和有什么区别

转载 作者:行者123 更新时间:2023-12-04 05:29:22 27 4
gpt4 key购买 nike

有人可以解释gen_server:start()gen_server:start_link()有什么区别吗?

有人告诉我这是关于多线程的东西。

编辑:
如果我的gen_server是从多个线程中调用的,它将一次执行所有这些线程吗?还是会在这些线程之间创建并发性?

最佳答案

这两个函数都将新的gen_server实例作为调用进程的子级来启动,但是它们的不同之处在于 gen_server:start_link/3,4 从原子上启动了gen_server子级并将其链接到其父进程。链接意味着,如果 child 死了,默认情况下, parent 也将死去。 Supervisors是父进程,当其子进程异常退出(通常是重新启动它们)时,它们会使用链接来执行特定的操作。

除了gen_server:start_link案例中涉及的链接之外,这些调用中没有涉及多进程方面。无论您使用gen_server:start还是gen_server:start_link来启动新的gen_server,新进程都具有单个消息队列,并且它一次接收并处理这些消息。 gen_server:start_link并没有导致新的gen_server进程的行为或执行与以gen_server:start开始时不同的行为或执行。

关于erlang - 在Erlang中,gen_server :start() and gen_server:start_link()?和有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38327206/

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