gpt4 book ai didi

posix - 名称和未命名信号量

转载 作者:行者123 更新时间:2023-12-04 01:38:19 25 4
gpt4 key购买 nike

我试图了解命名和未命名信号量之间的异同,所以我的谷歌搜索产生了我 this .不过,我对页面上的措辞有疑问,它说:

  • 未命名的信号量可能是 可用 通过一个以上的过程
  • 命名信号量是 可分享 由几个过程

  • 这两个词是否在这两种类型的信号量之间产生了任何重要区别,还是无关紧要?

    到目前为止,这是我所拥有的:
    Similarities
    -Several processes can do something with the semaphore

    Difference
    -Named are referenced with pathname and unnamed are referenced by pshared value

    这就是我能从这个定义中收集到的全部信息。这就是全部吗?它们是否正确?还是我错过了一些重要的概念?

    最佳答案

    考虑谁可以访问信号量。

    未命名的信号量(没有任何名称或句柄来定位它们)必须存在于某个预先存在的、商定的内存位置。在子进程的情况下,通常是 (1) 共享内存(由 fork 之后的子进程继承);或 (2) 共享内存、全局变量或堆,如果它们在单个进程的线程之间共享。这里最重要的是父、子或线程中的代码已经知道信号量的地址。

    命名信号量对于不相关的进程是必要的。例如,生产者和消费者可能由两个不同的开发人员编写并作为完全不相关的进程运行。但是它们必须共享一些需要受信号量保护的资源。命名的信号量为他们提供了通往信号量的路径。

    实际上,您可以在所有场景中使用命名信号量,但它们会带来一些额外的负担,因为您必须处理路径和权限,如果程序相关并且已经知道如何访问未命名信号量,则这些都是不必要的。例如,使用命名信号量在线程之间共享资源有点愚蠢。线程已经可以访问未命名信号量可以驻留的相同内存。

    关于posix - 名称和未命名信号量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13145885/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com