0

クラスのラウンドロビンスケジューラを作成する必要があります。最初にList<int>、プロセスID、到着時間、および処理時間を表す3つのリストを作成しました。到着時間で並べ替えました。プロセスには固定クォンタムが割り当てられており(4としてハードコーディングしています)、プロセスにRRを適用して、各プロセスのシーケンス順序と残り時間をtextBoxフォームに表示します。

ここで1つのアプローチを見つけましたが、それはJavaにあります: https ://stackoverflow.com/questions/7544452/round-robin-cpu-scheduling-java-threads

リンクに示されているように、3つのリストをオブジェクトリストに変換しようとしましたが、基本的には、これまでのところ、プロセスを表すオブジェクトのリストを作成することに成功しました。各オブジェクトにはprocessname、、、が格納されます。これは、と呼ばれるクラスによって表されます。arrivaltimebursttimePCB

これで、いくつかのプロセスを追加するためのリストを作成しました。

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アクセスしprocessname="P1"て4ずつデクリメントしたいとしますか?

これはC#では間違ったデータ構造ですか?

4

1 に答える 1

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;
    }
}
于 2011-12-04T17:12:39.790 に答える