posix信号量分为有名信号量和无名信号量。有名信号量建立时需要指定一个名称,方便用于进程间共享,其值是随内核的(UNP VOL2 P184)。无名信号量则只需要申明一个信号量对象对其初始化,基于内存的信号量具有随进程的持续性,子进程并不共享父进程的无名信号量。有名信号量存放在共享内存区,由sem_open函数创建,创建后可在进程间共享,函数分配一个信号量对象。有名信号量由close关闭已经打开的信号量,由sem_unlink删除一个信号量。无名信号量由sem_init初始化一个已经申明了的信号量,函数第2个参数制定信号量是否要在多个进程间共享。sem_wait等同于P操作,sem_post等同于V操作。
Posix信号量不同于条件变量,挂出操作总会被记住,当向一个条件变量发出信号时,没有线程等待该条件变量,那么信号将丢失。