介绍信号量之前
当多个进程同时访问一块共享空间的时候
临界资源
同步与互斥
互斥
同步
实现以上的手段便是信号量
信号量是什么
信号量: 由内核维护的整数,其值被限制为大于或等于0
信号量集合的创建
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
int semget(key_t key, int nsems, int semflg);
初始化信号量
int semctl(int semid, int semnum, int cmd, …);
信号量的操作
int semop(int semid, struct sembuf *sops, size_t nsops);
//信号量操作函数<span class="bd-box"><h-char class="bd bd-beg"><h-inner>,</h-inner></h-char></span>用于占用信号量<span class="bd-box"><h-char class="bd bd-beg"><h-inner>、</h-inner></h-char></span>释放信号量<span class="bd-box"><h-char class="bd bd-beg"><h-inner>、</h-inner></h-char></span>设置信号量等待
信号量集合的删除
//信号量集合调用 semctl 函数<span class="bd-box"><h-char class="bd bd-beg"><h-inner>,</h-inner></h-char></span>设置命令为 IPC_RMID
ret = semctl(semid,IPC_RMID,NULL);
信号量同步