上节课对信号量的相关函数semget() semctl() semop()做了了解(换不是很理解)这里用一个小例子来运用这三个函数进一步对信号量进行了解
目标实现:AB 进程使用同一信号量,
初始化型号量为0,
————-> B进程先进行p操作,
当用户输入OK时,
进行v操作, ———– > B进程输出1~100素数
PV操作相当一个计数器,将系统资源与当前资源做对比,当 系统资源大于等于我所需要的资源 ,我的进程就可以运行,如果不满足就堵塞, (比如说,你来的时候,资源数为1,而你恰好需要一个资源,那此时你得到了该资源,然后资源数变为1,我来的时候,资源数就是0了,但是我需要1个资源,资源不足,那我就会阻塞,直到信号量的值大于等于我需要的资源数,我才会被唤醒)
信号量的创建和相关操作的封装
void sem_get()//创建信号量集
{
semid = semget((key_t)1234, 1, 0664);
if(semid == -1)
{