什么是PV操作?
P操作是不可中断的原语,主要用于占用资源。
V操作时不可中断的原语,主要用于释放资源。
优点:
解耦合,把两个事情通过PV操作分开处理。
应用:
同步
代码:
begin
buffer:integer;
SP,SG:semaphore;
SP:1;SG:=0;
cobegin
process producer
L1:produce a product;
P(sp)
Buffer:=product;
V(sg);
go to L1
end;
process Consumer
L2: P(sg)
take a product;
V(sp);
consume;
go to L2
end;
coend;
end;
互斥
当进程P1、P2、P3…Pn都要使用某个资源A时,各进程都需要考虑还剩多少资源可以使用。
代码:
Begin
S:semaphore;
S:=1;
…
cobegin
…
proccess Pi
….
P(s);
临界区
V(s)
…….
end;
….
coend;
End;