我必须为一个类制作一个Round Robin调度程序。我最初创建了3个List<int>
列表来表示流程ID,它们的到达时间和处理时间。我按他们的到达时间排序。这些过程被分配了一个固定的量子(我将其硬编码为4),现在我想对它们应用RR并显示每个过程的序列顺序。他们在表单上textBox
的剩余时间。
我在这里找到了一种方法,但它在java中: https://stackoverflow.com/questions/7544452/round-robin-cpu-scheduling-java-threads
我尝试将我的三个列表转换为对象列表,如链接所示,但基本上,到目前为止,我已成功创建了一个表示进程的对象列表。在每个对象中,存储processname
,arrivaltime
,bursttime
。这由一个名为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#中的错误数据结构吗?
答案 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;
}
}