「飞机票售票问题」是解释交往并发进程中的一个重要例子。例如下面的代码
void T1() {
{按旅客订票要求找到Aj};
int X1=Aj;
if(X1>=1) {
X1--;
Aj=X1;
/*输出一张票*/;
}
else
/*输出信息"票已售完“*/;
}
void T2() {
{按旅客订票要求找到Aj};
int X2=Aj;
if(X2>=1) {
X2--;
Aj=X2;
/*输出一张票*/;
}
else
/*输出信息"票已售完“*/;
}
如果上面两个进程几乎同时运行,即下图中的情况一,出现了对 X 变量的使用,导致虽然两个人都买了票,理论上应该售出两张票,但结果却为 X = X+1