我正在使用C中的信号量,特别是为了控制对Linux中共享内存区域的访问。但有一件事我无法理解。

我使用互斥锁来控制对特定区域的访问,因为我有2个必须从该区域读取/写入的进程。事实是,当我们使用fork()创建新的子进程时,整个程序会“复制”到另一个程序,就像它们是两个单独的程序一样吗?因此,当我在一个过程中执行V(mutex)时,另一个人如何知道他无法访问?

我知道这是一个菜鸟问题,但是到目前为止,没有人可以向我解释这个问题。

最佳答案

您必须将同步对象放置在进程共享内存中,例如,使用mmap (... MAP_ANONYMOUS ...)创建。另外,它们必须设置PTHREAD_PROCESS_SHARED属性,例如,使用pthread_mutexattr_setpshared

关于c - C中的信号量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20596120/

10-12 06:23