信号量机制实现进程互斥、同步、前驱关系
知识总览图
信号量机制实现进程互斥
信号量机制实现进程同步
题目同步要求:要求线程P2的代码4要执行在线程P1的代码2的后面,如下图:
分析如下图:
“前操作”指的就是代码2,“后操作”指的就是代码4
上图中的目的是要实现同步,要让代码4执行在代码2的前面,假如刚开始执行的是线程P1,那么等到代码2执行之后,会执行V(S)操作,这个时候会让S++,S就变成了1,接着执行P2线程的P(S),由于此时S>0,表示有可用的资源,因此P2线程不会阻塞,所以会紧接着执行代码4,因此这种情况下,能保证代码4在代码2的后面执行,也就保证了同步;另外一种情况,加入先执行的是P2进程,这个时候由于S的值是0,因此没有可用的资源,S的值会变成-1,所以会让P2进程阻塞,然后会执行P1进程,等到执行P1进程的V(S)代码的时候,会让S++,这个时候S的值会变成S=0,因此会唤醒阻塞的进程,所以会唤醒P2进程,然后P2进程会执行代码4,这种情况也能保证代码4是在代码2的前面执行的。