Exemplo n.º 1
0
 public void Put(CPUProcess process)
 {
     lock (this)
     {
         if (_internalQueue1.Count > _internalQueue2.Count)
         {
             _internalQueue2.Enqueue(process);
         }
         else
         {
             _internalQueue1.Enqueue(process);
         }
     }
 }
Exemplo n.º 2
0
        public void StartProcessing()
        {
            while (_canProcess)
            {
                CPUProcess process = _queue.Get();

                if (process != null)
                {
                    IsProcessing = true;
                    Thread.Sleep(_random.Next(_minTimeOfProcess, _maxTimeOfProcess + 1));
                }
                else
                {
                    IsProcessing = false;
                }
            }
        }
Exemplo n.º 3
0
        static void Main(string[] args)
        {
            var firstProcessesQueue  = new CPUQueue(maxSize: 7);
            var secondProcessesQueue = new CPUQueue(maxSize: 7);

            var cpu = new CPU(firstProcessesQueue, secondProcessesQueue);

            var firstCpuProcess = new CPUProcess(
                cpuProcessId: 1, firstProcessesQueue, cpu, minProcessDurationMs: 3000, maxProcessDurationMs: 6000);
            var secondCpuProcess = new CPUProcess(
                cpuProcessId: 2, secondProcessesQueue, cpu, minProcessDurationMs: 2000, maxProcessDurationMs: 5000);

            var cpuThread              = new Thread(cpu.Run);
            var firstCpuProcessThread  = new Thread(firstCpuProcess.GenerateProcesses);
            var secondCpuProcessThread = new Thread(secondCpuProcess.GenerateProcesses);

            cpuThread.Start();
            firstCpuProcessThread.Start();
            secondCpuProcessThread.Start();
        }
Exemplo n.º 4
0
 public void AddProcessToQueue(CPUProcess process)
 {
     _queue.Put(process);
 }