Gug*_*dze 7 erlang erlang-otp gen-server
有人可以解释gen_server:start()
和之间的区别是gen_server:start_link()
什么?
我被告知这是多线程的东西.
编辑: 如果我的gen_server是从多个线程调用的,它会一次执行吗?或者它会在这些线程之间创建并发吗?
Ste*_*ski 11
这两个函数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
.
当您使用gen_server:start_link
新流程时,它将成为调用流程的“子级”,它是监督树的一部分。如果gen_server进程终止,它允许通知调用进程。
使用gen_server:start
将在监视树之外生成进程。
有关Erlang监管的详细说明,请参见:http : //learnyousomeerlang.com/supervisors
归档时间: |
|
查看次数: |
1403 次 |
最近记录: |