实现以下循环调度代码

时间:2011-12-04 17:02:58

标签: c# loops round-robin

我必须为一个类制作一个Round Robin调度程序。我最初创建了3个List<int>列表来表示流程ID,它们的到达时间和处理时间。我按他们的到达时间排序。这些过程被分配了一个固定的量子(我将其硬编码为4),现在我想对它们应用RR并显示每个过程的序列顺序。他们在表单上textBox的剩余时间。

我在这里找到了一种方法,但它在java中: https://stackoverflow.com/questions/7544452/round-robin-cpu-scheduling-java-threads

我尝试将我的三个列表转换为对象列表,如链接所示,但基本上,到目前为止,我已成功创建了一个表示进程的对象列表。在每个对象中,存储processnamearrivaltimebursttime。这由一个名为PCB的类表示。

现在我已经创建了一个列表,可以在其中添加许多进程:

public List<pcb> list = new List<pcb>(); // In place of ArrayList used in the 
                                         // example code in the link.

//For loop runs in which above 3 parameters are assigned values & then they're 
// added to list:

PCB pcb = new PCB(processname1, arrivaltime1, bursttime1);
list.Add(pcb);

但是如何搜索列表中的每个值以查找项目并对其进行操作?假设我想访问bursttime的{​​{1}}并将其减少4?

这是C#中的错误数据结构吗?

1 个答案:

答案 0 :(得分:0)

// To access the value:
int bursttime1 = list.FirstOrDefault(x => x.processname == "P1").bursttime;
// To change it:
list.FirstOrDefault(x => x.processname == "P1").bursttime -= 4;

如果您希望遍历列表:

foreach (PCB pcb in list) {
    if (pcb.processname == "P1") {
        pcb.bursttime -= 4;
    }
}