第9章 并发编程中的错误处理
1. 链接:链接定义了一种在两个进程之间的传播路径。如果两个进程被链接在一起,如果其中一个进程消亡,那么系统就会向另一个进程发送一个退出信号。我们把一群与某个给定的进程进行外国投资的进程集合称为该进程的链接集。
链接通过在一个进程中调用link(Pid)来完成,Pid是另一个进程的ID。
2. 退出信号:当一个进程消亡时,它会产生一个叫做退出信号的东西。系统会向这个进程的所有链接进程发送这个退出信号。
退出信号不是一个消息,它是一个信号。退出信号包含一个参数来描述进程消亡的原因,可以通过调用exit(Reason),也可以与系统自动设置。
当一个进程成功的完成spawn所指定的函数而退出时,Why就是normal。
3. 系统进程:当一个进程接收到一个非正常的退出信号时它自己也会消亡,除非它是那种特殊类型的进程-系统进程。当Pid进程向一个系统进程发送一个内容Why的退出信号时,系统会把退出信号转换为消息{'EXIT', Pid, Why},然后送入到系统进程邮箱。
可以通过在一个进程中调用process_flag(trap_exit, true)来将这个进程转换为一个系统进程。
4. 装死:在进程Pid1中调用exit(Pid2,X),这时Pid1会向Pid2发送一个退出信号,但Pid1并没有退出。
5. 进程收到退出信号后的处理关系:
是否捕获 收到的退出信号 收到信号后的动作
是否是系统进程)
true kill 消亡,向链接集广播退出信号killed
true X 将{'EXIT', Pid, X}消息加入到邮箱
false normal 继