代码之家  ›  专栏  ›  技术社区  ›  Eärendil Baggins

命名信号的一些实际用途是什么?

  •  0
  • Eärendil Baggins  · 技术社区  · 7 年前

    在类Unix系统中,我们既有未命名信号量,也有命名信号量。基本上我所做的一切,因为我必须传递指向实际数据的指针才能访问,所以我总是设法将信号量传递给任何线程必须访问资源本身的对象。简单的技术:用对象和信号量创建一个结构。

    在某些情况下,最好使用命名信号量是什么?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Sadaananth Anbucheliyan    7 年前

    正如JSPCL所说。命名信号量用于进程之间的同步。在两个进程之间不能共享相同的地址(因为某些嵌入式操作系统中有一些例外,如完整性、QNX等)。。因为每个进程都有不同的地址空间,其中地址页是不同的。

    因此,命名的信号量用于访问进程之间的共享内存。

    例如, Linux中的shmget()posix调用用于命名信号量。在这个调用中,您必须使用char*的信号量名称以及进程内存的读写权限。它将返回与共享内存相关联的信号量的文件描述符。之后,您必须调用mmap来获取共享内存地址。通过它你可以读写共享内存。

    现实世界中的例子是使用多个处理器的航空学。一个进程将与其他电子部件交互,并将信息发送给其他处理器。因此,在其他处理器中,必须有能够从串行端口读取数据然后发送到其他进程的进程。因此,这里的多进程通信使用名为信号量的