【发布时间】:2016-01-16 16:57:12
【问题描述】:
我创建了流程。其中之一prints "1" 30 times。另一个prints "2" 30 times。我希望这些进程依次打印它们的编号。
像这样:
1
2
1
2
...
但是每次运行程序,数字显示的都不一样:
1,2,2,1; 1,2,1,2,2,1,1,2.
有人可以告诉我,请问如何解决这个问题?
【问题讨论】:
-
一旦一个进程被分叉,它们可以被一个共享变量控制。
0的值意味着进程A将打印,1的值意味着进程B将打印。他们可以在打印一次后切换值。 -
不,它与 pid 无关,它是内核用来简化其工作的标识符。我认为他在谈论一个变量,该变量旨在控制第二个进程何时完成其工作,这意味着使用 mmap,即进程之间的共享内存。
-
并非所有程序都以相同的速度运行。在
fork()之后,您无法控制程序的速度。在单处理器系统上,两者都不能同时获取 cpu,但这并不意味着它们可以同时执行。
标签: c