第十四天:
1. 使用信号量集实现进程间的通信
1.1 基本概念
1.2 信号量的工作方式1)信号量
2)信号量集
1)初始化信号量为最大值
2)如果有进程申请到了一个共享资源,则信号量的数值减1;
3)当信号量的数值为0时,申请共享资源的进程进入阻塞状态;
4)如果有进程释放了一个共享资源,则信号量的数值加1;
5)当信号量的数值大于0时,等待申请共享资源的进程可以继续抢占共享资源,抢不到共享资源的进程继续阻塞
*》其实,相当于去网吧上网,网吧的电脑是共享资源,信号量相当于网吧的空机位的数值,当网吧的空机位大于零时,顾客进来可以使用空机位的
电脑,即占用共享资源,此时,空机位就减少了一台,信号量减1,当空机位为零时,网吧爆满,顾客进来就要等,也就是进入了阻塞状态,
等到有人下机了,即释放了一个共享资源,空机位多了一个,即信号量加1,在吧台等机子的人就要去抢占这个空机位,也就是抢占共享资源,
抢不到的人就要继续等了。
1.3 使用信号量集实现进程间通信的模型
1)获取key值——ftok函数
2)创建/获取信号量值——semget函数
3)初始化信号量集——semctl函数
4)操作信号量集控制进程/线程的个数——semop函数
5)删除信号量集——semctl函数
1.4 相关函数的解析
1)semget
2)semctl
3)semop
1.5 常用的基本命令
ipcs -s :
ipcrm -s :