为什么信号量被认为是一种进程间通信(IPC)方式?

3

在所有的书籍中,信号量都被列为IPC机制之一。为什么会这样呢?因为我所知道的是,信号量被用于同步。

我在论坛上读到过类似的问题,但那并没有解决我的疑惑。


3
"信号量(Semaphore)用于不同进程或线程之间的同步,这就是为什么它被视为IPC的原因。在多任务操作系统中,进程或线程需要相互协调以避免资源争用和竞争条件。信号量提供了一种方法来确保多个进程或线程之间的同步执行,并且可以防止进程或线程之间的竞争条件。" - Lee Duhem
但它不能方便地通过它传输数据,对吧? 仅仅因为两个或多个进程为了同步需要信号量,所以才称之为IPC? - Virendra Kumar
2
IPC指的是“进程间通信”,而“通信”意味着在进程之间传输信息,当需要执行某些操作(同步)时,信息就会在进程之间传输。 - Lee Duhem
@VirendraKumar 了解使用信号量变量的并发控制机制是一种技术(最简单的),可以对并发进程的执行施加控制。 - Grijesh Chauhan
你读过哪些书? 全部 - user454322
我已经在问题中写明了我在Stackoverflow上阅读了一些类似的问题,但我对答案不满意,所以我又问了@Dominic kexel。 - Virendra Kumar
3个回答

3

sem_overview手册页面告诉我们(并描述了如何操作):

POSIX信号量允许进程和线程同步它们的动作。

因此,信号量可用于进程间通信。


0

在Linux中,基本上有两种类型的信号量

named semaphores
unnamed semaphores

我认为这里的未命名信号量基本上是已知的IPC机制加锁机制,而命名信号量仅用于锁定机制。

这个link可能会有用。


你说得没错,但是在Linux书籍中,当我们阅读IPC时,这个主题会被放在同步和IPC两个章节下面,所以我才问的。 - Virendra Kumar
@VirendraKumar 我进行了一些更正,请再次检查。 - user2760375

0

我认为原因是由于命名信号量。
有两种类型的信号量,命名和未命名。

通常情况下,命名信号量用于进程同步,而未命名信号量用于线程同步。

这个多线程编程指南说:

命名信号量类似于进程共享信号量,但不同的是,命名信号量是通过路径名引用而不是通过 pshared 值引用的。命名信号量可以被多个进程共享。


*虽然可以在进程之间共享未命名信号量(例如与子进程共享),但这并不常见。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接