我有一个关于计算信号量的问题,我想知道我的实现是否正确,或者它是否在某处死锁。
有5个进程,P1,P2,P3,P4,P5需要按以下顺序执行:
P2 and P3 must execute after P1 completes.
• P4 must execute after both P2 and P3 complete.
• P5 must execute after both P2 and P3 complete.
我的方法:我在想的是有两个计数信号量S1和S2。 P2和P3在S1上等待,P4和P5在S2上等待。最初两者都有一个值0. P1完成执行后,在S1上发布两次,将其值增加到2.然后P2和P3可以执行。 P4和P5必须两次获得S2。因此,在P2和P3完成后,它们在S2上一起发布两次,将其值增加到2,因此P4和P5可以执行。
这是对的吗?或者在某些情况下是否会陷入僵局?