有人可以解释gen_server:start()
和之间的区别gen_server:start_link()
吗?
有人告诉我这是关于多线程的东西。
编辑:如果我的gen_server是从多个线程中调用的,它将一次执行它们吗?还是会在这些线程之间创建并发性?
这两个函数都将新gen_server
实例作为调用进程gen_server:start_link/3,4
的gen_server
子级来启动,但是它们的区别在于,原子启动一个子级并将其链接到其父进程。链接意味着,如果孩子死了,默认情况下,父母也将死去。主管是父进程,当其子进程异常退出(通常是重新启动它们)时,它们使用链接来执行特定的操作。
除了gen_server:start_link
案例中涉及的链接之外,这些调用中没有涉及多进程方面。无论您使用gen_server:start
还是gen_server:start_link
启动gen_server
新消息,新进程都只有一个消息队列,并且它一次只能接收和处理这些消息。没有什么gen_server:start_link
可以导致新gen_server
过程的行为或执行与开始时不同gen_server:start
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句