3 、并发执行的不可再现性——举例
例如,有两个循环程序 A 和 B ,它们共享一个变量 N 。
程序 A 每执行一次时,都要做 N=N+1 操作;程序 B 每执行一次
时, 都要执行 Print(N) 操作,然后再将 N 置成“ 0” 。
程序 A 和 B 以不同的速度运行。
① N=N+1 在 Print(N) 和 N=0 之前,此时得到的 N 值分别为
n+1, n+1, 0
② N=N+1 在 Print(N) 和 N=0 之后,此时得到的 N 值分别为 n,
0, 1
③ N=N+1 在 Print(N) 和 N=0 之间,此时得到的 N 值分别为 n,
n+1, 0
结论:尽管程序、环境、初始条件不变,单由于并发执行,结果不同
4 、引入进程
并发执行通过各资源的均衡利用,大大提高系统的吞吐量。但程序在
并发执行时会失去不可再现性,导致失去了运行的意义。为此,引入了
“进程”这个概念。
2.1 基本概念
5