缺陷的背后(四)---for
导语 业务模块为实现高并发时的更快的处理速度,经常会采用多进程的方式去处理业务。本章就是站在多进程的角度下,理解多进程模式下常见的两种bug:僵尸进程,窜包返回。理解问题出现的原因以及如何避免,如何 有效的测试出这类缺陷。 目录 一:线上缺陷分析 二:多进程概念理解 三:僵尸进程理解 3.1 产生原因 3.2 如何避免 3.3 问题场景 四:窜包 4.1 产生原因 4.2 如何避免 4.3 问题场景 二:多进程概念理解 概念2.1: fork子进程 进程(Process)是计算机中已运行程序的实体,是系统的基本运作单位,是资源分配的最小单位,fork子进程后,子进程会复制父进程的状态(内存空间数据等)。fork 出来的进程和父进程拥有同样的上下文信息、内存数据、与进程关联的文件描述符。 下面结合demo来看看有没有理解这句话。 问题1 :全局变量list1,fork子进程后,在子进程内:打印list1的虚拟地址,修改list1[0]的值,打印list1值,打印list1虚拟地址。 主进程内:打印list1的虚拟地址,待子进程修改后,打印list1值。 子进程和主进程打印的虚拟地址值是一样的吗?打印的list1的值是一样的吗? import osimport timelist1 =[1,2,3,4]print("list1的地址为{0}".format(id(list1))