void run(FCFS &node) { node.finishtime = max(nowtime,node.arrivetime)+node.servicetime; node.aroundtime = node.finishtime - node.arrivetime; node.weight_aroundtime = node.aroundtime/node.servicetime; nowtime = node.finishtime; }有什么问题吗
时间: 2023-06-28 20:08:55 浏览: 111
这段代码看起来是计算作业调度中的先来先服务(FCFS)算法的完成时间、周转时间和带权周转时间。不过需要注意以下几点:
1. `nowtime` 的初始值应该在函数外部初始化,否则第一个作业的 `max(nowtime,node.arrivetime)` 的计算结果可能是错误的。
2. 对于 FCFS 算法,当前作业的完成时间应该是上一个作业的完成时间与当前作业的到达时间取最大值再加上当前作业的服务时间。因此,在计算当前作业的完成时间时,应该将 `max(nowtime,node.arrivetime)` 改为 `max(prev_finishtime, node.arrivetime)`,其中 `prev_finishtime` 表示上一个作业的完成时间。
3. 在计算周转时间和带权周转时间时,应该使用 `node.finishtime - node.arrivetime` 和 `node.aroundtime/node.servicetime`,而不是 `node.aroundtime/node.servicetime` 和 `node.aroundtime/node.servicetime`。因为在计算完成时间时已经计算了周转时间和带权周转时间,所以不需要再次计算。
修改后的代码如下:
```
void run(FCFS &node) {
node.finishtime = max(prev_finishtime, node.arrivetime) + node.servicetime;
node.aroundtime = node.finishtime - node.arrivetime;
node.weight_aroundtime = node.aroundtime / node.servicetime;
prev_finishtime = node.finishtime;
}
```
阅读全文