PV操作的进一步理解(同步与互斥)

几年前对PV操作进行了基本的理解PV操作的初次理解

现在进一步理解同步与互斥方向的问题。主要以题的方式理解。

 如上述题,是20年408的真题。

首先要明白信号量的问题,信号量(semaphore)。

信号量semaphore>0的时候,表示还有空余的资源可以使用。当V操作一个资源的时候semaphore-1。

信号量semaphore<0的时候,表示还有空余的资源可以使用。当P操作一个资源的时候,semaphore+1。

了解了信号量之后就能够很好的理解上述题目了。

//首先设置信号量,表示从某个路径到某个路径的执行。
例如AC表示,从A->C的执行。


semaphore  AC =0;//A到C
semaphore  BC =0;//B到C
semaphore  CD =0;//C到E
semaphore  DE =0;//D到E


//执行A
void A()
{
while(true)
{
开始操作A
signal(AB);//释放A
}
}


//执行B
void   B(){

while(true){
开始操作B
signal(BC);//释放B
}
}


//执行C
void   C(){
while(true)
{
//因为C执行的条件是AB都已经执行了,所以需要等待AB
wait(AB);//等待A
wait(BC);//等待B
开始操作C
signal(CD);//释放C
}
}


//执行D
void   D(){
while(true)
{
开始操作D
signal(DE);//释放D

}
}


//执行E
void   E(){
while(true)
{

//因为E执行的条件是CD都已经执行了,所以需要等待CD
wait(ce);//等待C
‘wait(de);//等待D
开始操作E//释放E

}
}

PV操作的关键是,资源只有一个,或是有执行的顺序。

如上述,就完成了该题的PV操作了。

后续理解待更新~ ~ ~

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ybbgrain

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值