System V信号量:来源于Unix操作系统的一个分支,即System V版本。
POSIX信号量:来源于“可移植操作系统接口(Portable Operating System Interface)”标准,这是一个由电气与电子工程学会(IEEE)开发,并由ISO(国际标准化组织)和IEC(国际电工委员会)采纳的国际标准。
使用场景:
System V信号量:常用于进程间的同步。
POSIX信号量:常用于线程间的同步,但也可以用于进程间同步,特别是当使用有名信号量时。
实现与复杂性:
System V信号量:使用相对复杂,通常涉及多个步骤和结构体(如struct sembuf)。
POSIX信号量:使用相对简单,通过单一的sem_open调用即可完成信号量的创建、初始化和权限设置。
存储位置:
System V信号量:基于内核,存放在内核空间中。
POSIX信号量:基于内存,信号量值通常存放在共享内存中,有名信号量通过文件系统(如/dev/shm)中的特殊文件来表现。
信号量范例:
System V信号量:通常作为信号量聚集存在,每个聚集可以包罗多个信号量。
POSIX信号量:有两种范例——有名信号量和无名信号量。有名信号量通过IPC名字进行进程间同步,无名信号量则通常用于线程间同步。
信号量操作:
System V信号量:通过semop等系统调用来操作信号量。
POSIX信号量:通过sem_wait(P操作)、sem_post(V操作)等函数来操作信号量。
头文件与接口:
System V信号量:使用头文件,接口函数包括semget、semop等。
POSIX信号量:使用头文件,接口函数包括sem_open、sem_wait、sem_post等。
剩下一项套接字,一样平常用于网络编程,即差别主机间的进程通信,后续补充。