public void AddTo(BinomialHeap <T> otherHeap) { otherHeap.Insert(Value); if (Sibling != null) { Sibling.AddTo(otherHeap); } if (Child != null) { Child.AddTo(otherHeap); } }
static void Main(string[] args) { Console.WriteLine("Welcome to the Completely Fair Scheduler Simulator"); Console.WriteLine("Do you want to introduce a scheduling bias? (Y/n):"); String wantBias = Console.ReadLine().Trim().ToLower(); int schedulingBias; if (wantBias.Equals("y")) { Console.WriteLine("Pick your bias: "); Console.WriteLine("1. Energy"); Console.WriteLine("2. Performance"); Console.WriteLine("3. UserFocus"); schedulingBias = int.Parse(Console.ReadLine()); switch (schedulingBias) { case 1: currentBias = SchedulingBias.Energy; break; case 2: currentBias = SchedulingBias.Performance; break; case 3: currentBias = SchedulingBias.UserFocus; break; default: currentBias = SchedulingBias.Default; break; } } Timer taskTimer = new Timer { Interval = new Random().Next(1000), Enabled = true, AutoReset = true, }; taskTimer.Elapsed += GenerateTasks; Console.Clear(); Console.WriteLine("\tProcessID\tPriority\tvRuntime\tPower Consumption\n"); BinomialHeap <Task> schedulingHeap = new BinomialHeap <Task>(); Console.CancelKeyPress += new ConsoleCancelEventHandler(myHandler); while (true) { Task readyTask = null; processReadyQueue.TryPop(out readyTask); if (readyTask != null) { schedulingHeap.Insert(readyTask); if (!running) { running = true; Task currentTask = schedulingHeap.ExtractMin(); Thread cpuLoop = new Thread(() => CPUThread(currentTask)); cpuLoop.Start(); } } } }