0

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

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

谢谢大家!!

4

1 回答 1

1

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

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

于 2013-08-30T12:03:33.803 回答