主题:[讨论]进程的互斥!
yqin
[专家分:150] 发布于 2006-10-29 11:03:00
n各并发进程公用一个公共变量Q,怎样用p v操作实现n个进程的互斥???
回复列表 (共6个回复)
沙发
读不懂C语言 [专家分:0] 发布于 2006-11-01 11:21:00
互斥算法不是可以用wait和signal操作来实现吗?
板凳
最后的罗米欧 [专家分:440] 发布于 2006-11-04 10:06:00
楼上的正解,用wait和signal就行了
等下post篇实现这两个函数的c代码
3 楼
prodesigner [专家分:0] 发布于 2006-11-29 15:29:00
假设每个进程一次只申请或释放一个资源
用变量Q表示资源数
算法如下:
while Q = 0 then
wait();
if Q>0
{
Q--;
....//进程要执行的操作
Q++;
}
4 楼
wrq3530 [专家分:30] 发布于 2006-12-03 00:12:00
P.V 操作 实现进程互斥```
main()
{
int Q=1;
cobegin
pa();
pb();
coend
}
pa()
{ .....;
p(Q);
对数据操作;
v(Q);
.....;
}
pb()
{ .....;
p(Q);
对数据操作;
v(Q);
.....;
}
5 楼
lt19870917 [专家分:750] 发布于 2006-12-03 18:11:00
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 楼
lt19870917 [专家分:750] 发布于 2006-12-03 18:12:00
用的是原语,具体的语言各异
我来回复