使用信号量的并行处理

时间:2019-03-20 21:13:43

标签: parallel-processing semaphore

这个exercise

过程Δ1,Δ2,Δ3并行运行,并且信号量的起始值为s1 = s2 = s3 = 0。它询问可以打印哪些字符串。

我对这个练习的解决方案是字符串ABC和BAC.Δ3进程从semWait和s3 = 0开始,所以我假设它被阻塞了,我从Δ1或Δ2开始。当我运行进程Δ1时,它先打印A,然后输出semSignal,s3得到值1并以SemiWait阻塞过程Δ1,因为s1 = 0,所以值更改为s1 = -1。此后,我运行过程Δ2,它打印B并以semSignal打印,s3得到的值2并以semWait阻塞因为s2 = 0,所以s2的值变为-1。在最后一个过程Δ3解除阻塞,并且两个semWait s3的值s3 = 0之后,它打印C,并且两个semSignals s1和s2的值变为0。

这是对的吗?还经过Δ3处理后,我不知道我是否必须停止运行,还是用semSignal s1,s2重新运行Δ1,Δ2处理。

0 个答案:

没有答案