程序并发执行为什么会失去顺序执行时的封闭性和可再现性?

来源:百度知道 编辑:UC知道 时间:2024/05/31 02:05:35

因为程序在并发执行时,是多个程序共享系统中的各种资源,就像一扇门没上锁,很多人都进进出出一样,程序的运行,它用到的资源的状态可以被其他程序随意改变,程序也自然就失去了封闭性;由于失去了封闭性,程序经过多次执行后,其计算机结果已与并发程序的执行速度有关,从而使程序的执行失去了可再现性。例如:
有两个循环程序A和B,它们共享一个变量N。程序A每执行一次时,都要做N∶=N+1操作;程序B每执行一次时, 都要执行Print(N)操作,然后再将N置成“0”。程序A和B以不同的速度运行。
(1) N∶=N+1在Print(N)和N∶=0之前,此时得到的N值分别为N +1, N +1, 0。
(2) N∶=N+1在Print(N)和N∶=0之后,此时得到的N值分别为 N, 0, 1。
(3) N∶=N+1在Print(N)和N∶=0之间,此时得到的N值分别为N, N +1, 0。
换句话说,就是程序经过多次执行后,虽然它们执行时的环境与初始条件相同,但得到的结果却各不相同。希望能帮到你。