Skip to content

2017年 408 操作系统 第 46 题

操作系统2017年综合题8分

题目 ​

某进程中有 3 个并发执行的线程 thread1、thread2、thread3,其伪代码如下:

c
// 复数的结构类型定义
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;
    w = add(x, y);
    ...
}

thread2 {
    cnum w;
    w = add(y, z);
    ...
}

thread3 {
    cnum w;
    w.a = 1;
    w.b = 2;
    z = add(z, w);
    y = add(y, w);
    ...
}

请添加必要的信号量和 P、V(或 wait、signal)操作,要求确保线程互斥访问临界资源,并且最大程度地并发执行。

最后更新:

⚠️ 这道题暂未配可视化,欢迎在 CodeBrick 反馈区告诉我们你想看哪道题