pv操作主要用于进程管理,且其通常和信号量联合使用。
P(S):①将信号量S的值减1,即S=S-1;
如果S>=0,则该进程继续执行;否则该进程置为等待状态,排入等待队列。
V(S):①将信号量S的值加1,即S=S+1;
如果S>0,则该进程继续执行;否则释放队列中等待信号量的进程。
信号量广泛用于进程或线程间的同步和互斥,其主要用途有以下三种:
1.对临界区代码加锁(实现互斥)。
2.标记当前可用资源数。
3.线程间同步工具(类似生产者消费者中生产者和消费者通信当前是否有可用,是否满了)。
参考如下: