在两个线程之间同步Printf

时间:2020-06-20 08:58:50

标签: c linux process synchronization mutex

我正试图了解这些东西是如何工作的。我正在为考试而学习,但是我的大学并没有真正清楚地说明事情。

我正在尝试同步两个进程。我从一个简单的代码开始(应该)打印两个进程的PID。为了确保它们确实是同步的,我进行了整理,以便每个进程打印5次PID,然后重新启动。

这是代码(对不起,我使用的是VM,因此很难复制/粘贴)

[img] https://i.ibb.co/55vL8vH/code.png[/img]

这是结果:

[img] https://i.ibb.co/7VZVPdp/result.png[/img]

如您所见,这是一个非常简单的代码,但是我真的不知道为什么它不起作用。我猜(但我不确定),这就是为什么两个进程之间不共享互斥锁的原因……就像每个进程都拥有自己的Mutex,并且不与另一个进程合作。

1 个答案:

答案 0 :(得分:0)

这是操作系统中一个非常重要且广泛的概念,但我可以向您展示一些技巧,以便您进一步搜索:

当您在代码OS中为fork()创建新进程的新内存块(是父进程内存的副本)时,这意味着变量是相同的,但是如果您在另一个进程中更改其中一个变量,则不会更改,您必须对inter-process communication使用shared memory概念,以便在进程之间具有共享变量。

相关问题