【发布时间】:2021-09-05 07:03:52
【问题描述】:
最近,在我接受的一次采访中,我们正在讨论关键部分。
问的问题是“what happens when we execute fork inside critical section? Will the resulting child process also execute the critical section simultaneously?”
我们讨论了各种可能性:
- 是的,两者可能同时执行关键部分
- fork() 系统调用可能会阻塞子进程,只允许父进程执行临界区。
- 编译器可能足够智能以识别此问题并可能引发编译错误。 不幸的是,我在互联网上找不到有关此的更多详细信息。 TIA。
编辑: 添加伪代码供参考:
semaphore s;
s.wait(); // lock
/* critical-section */
pid = fork(); /* what will happen here in child/parent process? */
s.signal(); // unlock
【问题讨论】:
-
难道不依赖于信号量的实现吗?
-
有不同的东西叫做“信号量”,有不同的语义。 POSIX 信号量、SysV 信号量、手写的东西?
标签: linux fork critical-section