为什么在Erlang中需要spawn_link?

all*_*ode 2 erlang

据我所知,如果你确实产生后跟链接,那么这个过程可能已经在同一时间内死亡.为什么这是一个问题?无法链接看到你试图链接到已经死亡的进程?在那种情况下,它不能只是表现为远程进程在链接被调用后立即死亡?

我认为如果你可以单独生成和链接,而不必在一个原子函数中一起完成它们会很好,因为a)会使语言更正交(spawn_link与spawn和链接重叠)b)如果我有一个start函数,它基本上只是spawn的包装器,我还需要提供start_link.所以非正交性是病毒式的.呸!

Ste*_*ski 8

请记住,链接是双向的,因此请考虑进程A生成进程B但在能够链接到B之前死亡的情况.在这种情况下,B不知道它没有链接到A,并且它不会在A时死亡死亡.

随着spawn_link这种情况是不可能发生的,因为产卵和链接要么原子一起出现,或者他们都失败.