信号量实现进程互斥、同步、前驱关系
P、V 操作必须成对出现。缺少 P(mutex) 就不能保证临界资源的互斥访问。缺少 V(mutex) 会导致资源永不被释放,等待进程永不被唤醒。
一、实现进程互斥
注:下图中的第一行对信号量的初始化只是简化写法,并不严格遵循结构体的相关语法,仅供理解参考
补充:对不同的临界资源需要设置不同的互斥信号量。
二、实现进程同步
进程同步:要让各并发进程按要求有序地推进。
基本原理:
在一个顺序中,靠前的代码的后方设置 V(S) 操作 (释放资源),靠后的代码的后方设置 P(S) 操作 (使用资源),以达到只有持有资源才能继续运行的先后逻辑。
三、实现进程的前驱关系
本质上是多级进程同步。