工作进程共享资源

时间:2013-08-30 02:02:55

标签: c multithreading

我是C程序的初学者,在工人流程之间得到了一个问题 我编写了一个程序,它在一个子进程中分叉,在进程内部,它创建了2个线程来运行并从DB获取一些值;但是,如果我fork 2进程,它将完全创建4个线程

我想知道“外部变量”将在这两个过程中共享吗?还是独立的?
如果不共享变量,我如何维护过程之间的一致性?
(抱歉我的英语不好)

谢谢大家!!

1 个答案:

答案 0 :(得分:1)

当您分叉进程时,父进程和子进程都有自己独立的地址空间,无法通过变量进行通信。 当您在进程内部启动两个线程(线程是一个轻量级进程)时,它们共享进程的地址空间并可以通过变量进行通信。

因此,“extern变量”将在您的情况下重复两次,您不能使用它们在进程之间进行通信。要同步这两个进程,您需要使用IPC(进程间通信)机制,例如(例如)存储器的共享内存可能耦合到信号量以防止并发访问。