文章目录
- 一、信号量的定义?
- 二、信号量的使用
- 三、ipcs的使用
一、信号量的定义?
信号量是一个特殊的变量,一般取正数值。它的值代表允许访问的资源数目,获取资源时,需要对信号的值进行原子减一,该操作被称为p操作。当信号量值为0时,代表没有资源可用,p操作会阻塞。释放资源时需要对信号量的值进行原子加一,该操作称为V操作。信号量主要用来同步进程。信号量如果只取0,1,将其称为二值信号量。如果信号量的值大于1,则称之为计数信号量。
二、信号量的使用
操作信号量的接口介绍:
semget() 创建或者获取已存在的信号量
semop() 对信号量进行改变P操作 ,或者V操作
semctl() 控制信号量
首先对函数进行封装
sem.h头文件
sem.c 进行函数实现
1、sem_init()函数
2、sem_p()函数
sem_v()函数
4.sem_destory函数
设置两个进程a.c 、b.c
1、a.c
2、b.c
运行结果
只能为:AABBAABBAABBAABBAABB
原因:AABBAABB只能成对的出现才能代表进程同步机制。
三、ipcs的使用
ipcs 查看消息队列,共享内存,信号量
ipcrm -s semid 删除信号量