文章

117

粉丝

0

获赞

0

访问

5.5k

头像
2017年计算机学科专业基础综合试题 - 第46题回答
操作系统
发布于2025年7月2日 16:42
阅读数 21

//信号量定义及初始化
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;...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发