文章
117
粉丝
0
获赞
0
访问
5.5k
//信号量定义及初始化
semaphore mutex_y = 1; // 用于保护变量 y
semaphore mutex_z = 1; // 用于保护变量 z
//复数的结构类型定义
typedef struct
{
float a;
float b;
}cnum;
cnum x,y,z; //全局变量
//计算两个复数之和
cnum add( cnum p,cnum q)
{
cnum s;
s.a=p.a+q.a;
s.b=p.b+q.b;
return s;
}
thread1
{
cnum w;
cnum local_y; // 引入局部变量,在临界区内读取 y 的值
// 访问临界资源 y
P(mutex_y); // 请求访问 y
local_y = y; // 在互斥区内读取 y
V(mutex_y); // 释放 y
// 计算不涉及共享资源的 w
w=add(x, local_y); // x 是只读全局变量,w 是局部变量,不冲突
...
}
thread2
{
cnum w;
cnum local_y, local_z; // 引入局部变量,避免在临界区内停留过久
// 访问临界资源 y
P(mutex_y); // 请求访问 y
local_y = y; // 在互斥区内读取 y
V(mutex_y); // 释放 y
// 访问临界资源 z
P(mutex_z); // 请求访问 z
local_z = z; // 在互斥区内读取 z
V(mutex_z); // 释放 z
// 计算不涉及共享资源的 w
w=add(local_y, local_z); // w 是局部变量,不冲突
...
}
thread3
{
cnum w;...
登录后发布评论
暂无评论,来抢沙发