【发布时间】:2017-03-26 13:28:29
【问题描述】:
我试图了解叉子在 C 中是如何工作的,但我在某处误解了一些东西。
去年我遇到了一位教授给我的测试,但我无法回复: 我们有 3 个任务(进程或线程),伪代码如下:
Th1 { display "Hello 1" }
Th2 { display "Hello 2" }
Th3 { display "Hello 3" }
main() {
Fork(Th1);Fork(Th2);Fork(Th3);
}
问题是:Which is the order of the execution of these tasks? Why?
我该如何回复这个问题?是否有任何指南或任何有用的资源可以让我了解分叉、信号量和内存分配的方式?
我是低级编程的真正新手。
【问题讨论】:
-
顺序是随机的。因此,如果您需要强制执行特定顺序,则需要实现锁定机制,例如使用信号量。
-
当然可以。我怎么知道?为什么?
-
fork 只是产生了一个新进程,由操作系统为其安排资源以及何时运行它。