我有 2 个进程 P1 和 P2 共享 3 个信号量(s1、s2、s3),每个信号量的初始值为 1,还有 3 个变量(x、y、z)
P1: P2:
wait(s1); wait(s2);
x = x + 1; y = y * 2;
wait(s2); wait(s3);
y = y - x; z = z - y;
wait(s3); signal(s2);
z = x + 2 * y - z; wait(s1);
signal(s3); x = x + 2;
signal(s2); signal(s1);
signal(s1); signal(s3);
如果我要在具有单个 CPU 的计算机上同时运行它们,P1 和 P2 是否有可能陷入死锁?
我的看法是,一旦它们开始运行,它们都会等待(),这会导致它们坐下来,直到有信号()它们。既然没有其他东西在运行,那么它们不是都陷入僵局了吗?我觉得我错过了一些非常简单的知识,这些知识阻碍了我的理解。任何见解表示赞赏!