回 帖 发 新 帖 刷新版面

主题:[讨论]进程的互斥!

n各并发进程公用一个公共变量Q,怎样用p v操作实现n个进程的互斥???

回复列表 (共6个回复)

沙发

互斥算法不是可以用wait和signal操作来实现吗?

板凳

楼上的正解,用wait和signal就行了
等下post篇实现这两个函数的c代码

3 楼

假设每个进程一次只申请或释放一个资源
用变量Q表示资源数
算法如下:
  while Q = 0 then
    wait();
  if Q>0
  {
    Q--;
    ....//进程要执行的操作
    Q++;
  }
  

4 楼

P.V 操作 实现进程互斥```
main()
{
 int Q=1;
 cobegin
  pa();
  pb();
 coend
}

pa()
{ .....;
  p(Q);
   对数据操作;
  v(Q);
  .....;
}

pb()
{ .....;
  p(Q);
   对数据操作;
  v(Q);
  .....;
}

5 楼

s=1
cobegin
P1:P(s);CS1;V(s);program1;
//
p2:P(s);CS2;V(s);program2;
//
..
..
..
//
pn:P(s);CSn;V(s);programn;
coend

6 楼

用的是原语,具体的语言各异

我来回复

您尚未登录,请登录后再回复。点此登录或注册