使用信号量进行流程同步

时间:2020-04-24 18:18:15

标签: signals wait semaphore

首先,这是我的第一篇文章,对于任何错误,我深表歉意。

我正在尝试使用信号量实现进程同步。
必须按以下顺序执行6个过程:
进程1可以首先开始运行。
进程1完成后,进程2即可开始运行。
进程3可以首先开始运行。
流程4和流程3完成后才能开始流程4。
流程5可以在流程4完成后开始。
流程6可以在流程3完成之后开始。

我正在尝试使用二进制信号量解决此问题。到目前为止,这是我所做的事情(伪代码):

Process 1:
execute(process1)
signal(P2)

Process 2:
wait(P1)
execute(process2)
signal(P4)

Process 3:
execute(process3)
signal(P4)
signal(P6)

Process 4:
wait(P2)
wait(P3)
execute(process4)
signal(P5)

Process 5:
wait(P4)
execute(process5)

Process 6:
wait(P3)
execute(process6)

我正在使用6个初始化为0的信号量。
如果P1首先启动,则向P2发出信号。在执行P2之后,它会向P4发送信号。然后,P3可以运行并再次向P4发送信号使其变为2。如何避免这种情况?我是否理解不正确?

可以通过对信号量进行计数来解决此问题吗?每个信号量的初始值应该是多少?

谢谢。

0 个答案:

没有答案