Linux信号量(2)-POSIX 信号量( 三 )


无名信号量的持续性要根据信号量在内存中的位置确定:
如果无名信号量是在单个进程内部的数据空间中 , 即信号量只能在进程内部的各个线程间共享 , 那么信号量是随进程的持续性 , 当进程终止时他也就消失了;
如果无名信号量位于不同进程的共享内存区 , 因此只要该共享内存区仍然存在 , 该信号量就会一直存在;所以此时无名信号量是随内核的持续性 。
信号量-互斥量-条件变量很多时候信号量、互斥量和条件变量都可以在某种应用中使用 , 那这三者的差异有哪些呢?下面列出了这三者之间的差异:

  • 互斥量必须由给它上锁的线程解锁;而信号量不需要由等待它的线程进行挂出 , 可以在其他进程进行挂出操作;
  • 互斥量要么被锁住 , 要么被解开 , 只有这两种状态;而信号量的值可以支持多个进程/线程成功的进行wait操作;
  • 信号量的挂出操作总是被记住 , 因为信号量有一个计数值 , 挂出操作总会将该计数值加1 , 然而当条件变量发送一个信号时 , 如果没有线程等待在条件变量 , 那么该信号就会丢失 。
更多信息请关注:一口Linux