竞争的问题

2019-03-26 12:28发布

我买了UNIX环境高级编程,正在看。看到第8章,竞争条件。
程序如下:
1.png
书上说,该程序输出两个字符串:一个由子进程输出,另一个由父进程输出。
因为输出依赖于内核使这两个进程运行的顺序及每个进程运行的时间长度,所以
该程序包含了一个竞争条件。
以下是我运行的结果:
2.png
第16次运行的时候产生了竞争。

此帖出自Linux与安卓论坛
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
chenbingjy
1楼-- · 2019-03-26 18:57
本帖最后由 chenbingjy 于 2016-8-8 14:36 编辑

然后,我把程序改成下面这样:
3.png
fork了两次,也就是第一个进程的子进程和第二个进程的子进程轮流打印字符。
而父进程不打印。
运行结果如下:
4.png 5.png
正常情况下先打印first child,再打印second child。可是第12次运行,先打印的second child,
再打印的first child。而第31次运行,打印顺序完全乱了。

chenbingjy
2楼-- · 2019-03-26 22:58
最后,我把程序改成下面这样:
6.png
还是fork两次,然后父进程/第一个子进程,第二个子进程都打印。
本来我一开始试的时候,老是不出错。可是等我发帖子截图的时候,
运行到第16次,突然打印乱了。如图:
7.png
真坑啊!

一周热门 更多>