基本同步方法
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201105095338232.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N0cm9uZ195dQ==,size_16,color_FFFFFF,t_70#pic_center)
信号量
信号量是操作系统系统的一种同步机制,是一种抽象的数据类型,由一个整形(sem)变量和两个原子操作组成
p():sem减1,如果sem<0,进入等待,否则继续
v():sem加1,如sem<=0,则唤醒一个线程
使用路灯来类别,每次同时能通过几辆车
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201105100604331.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N0cm9uZ195dQ==,size_16,color_FFFFFF,t_70#pic_center)
信号量的特性
信号量是被保护的整数变量
初始化完成后, 只能通过P()和V()操作修改
由操作系统保证,pv操作是原子操作
P()可能阻塞,V()不会阻塞
通常假定信号量是"公平的"
线程不会被无限期阻塞在P()操作
假定信号量等待按先进先出排队
<