private Processo ComparaPrioridade(Processo processo) { mutex.WaitOne(); Processo aux = Program.listaPronto.ComparaPrioridade(processo); if (aux != null) { aux = Program.listaPronto.BuscaRetira(aux); mutex.ReleaseMutex(); return(aux); } mutex.ReleaseMutex(); return(null); }
public Processo Busca(Processo busca) { Elemento aux = this.atual.Anterior; try { while (aux != null) { if (aux.DadoProcesso().Id == busca.Id) { return(aux.DadoProcesso()); } aux = aux.Anterior; } return(null); } catch { return(null); } }
private void AlocaProcesso(ref Processo executando) { Processo aux; mutex.WaitOne(); if (executando.Nome == null) { aux = Program.listaPronto.RetiraPrimeiro(); if (aux != null) { executando = aux; if (Thread.CurrentThread.Name == "CPU1") { AdicionarItemTextBoxCPU1(executando.ToString()); } else if (Thread.CurrentThread.Name == "CPU2") { AdicionarItemTextBoxCPU2(executando.ToString()); } } } else if (!Program.listaPronto.Vazia()) { executando = Program.listaPronto.ComparaPrioridade(executando); Program.listaPronto.BuscaRetira(executando); AtualizarForm(); if (Thread.CurrentThread.Name == "CPU1") { AdicionarItemTextBoxCPU1(executando.ToString()); } else if (Thread.CurrentThread.Name == "CPU2") { AdicionarItemTextBoxCPU2(executando.ToString()); } } //this.textBoxListaPronto.Text = Program.listaPronto.ToString(); mutex.ReleaseMutex(); Ciclo(ref executando); }
public Processo ComparaPrioridade(Processo processo) { try { Elemento percorre = this.primeiro; Processo aux = new Processo(); while (percorre.Proximo != null) { if (percorre.Proximo.DadoProcesso().Prioridade > aux.Prioridade) { aux = percorre.Proximo.DadoProcesso(); } percorre = percorre.Proximo; } return(aux); } catch (System.Exception e) { MessageBox.Show("Erro na Lista Encadeada (Compara Prioridade). {0} \n", e.ToString(), MessageBoxButtons.OK); throw; } }
public Elemento(Elemento elemento) { this.anterior = elemento.Anterior; this.processo = elemento.DadoProcesso(); this.proximo = elemento.Proximo; }
public Elemento(Processo p) { this.processo = p; this.anterior = null; // os apontadores devem ser definidos na lista na hora de inserir this.proximo = null; // os apontadores devem ser definidos na lista na hora de inserir }
public Elemento() { this.anterior = null; this.processo = null; this.proximo = null; }
private void TrocaContexto(Processo novo, ref Processo processo) { mutex.WaitOne(); processo = novo; mutex.ReleaseMutex(); }