【发布时间】:2018-11-07 09:18:57
【问题描述】:
在类 UNIX 系统中,我们既有未命名的信号量,也有命名的信号量。对于我所做的基本上所有事情,因为我必须将指针传递给要访问的实际数据,所以我总是设法将信号量传递给必须访问资源本身的任何线程。简单的技巧:用对象和信号量创建一个结构体。
在哪些情况下最好使用命名信号量?
【问题讨论】:
-
您可以使用命名信号量在无法访问相同地址空间(因此不能共享相同指针)的多个进程之间进行同步。
-
@jspcal 所说的。请注意,这更像是一个 [操作系统] 或 [多线程] 问题,而不是 C。
-
那么,如果我在进行分叉之前创建了一个未命名(甚至命名)的信号量怎么办?它是否会与所有进程的 PCB 一起被克隆,使得等待它变得毫无意义(因为每个进程都会等待它的副本而不与另一个进程交互)?否则,如果该信号量在各个进程之间保持相同(仅复制指向它的指针),则可能是另一种同步它们的方式。
标签: c multithreading unix concurrency semaphore