A maior rede de estudos do Brasil

Threads?

Baseado no codigo abaixo (escrito em C, suponha que a função incr seja executada no modo concorrente por 10 threads. Cada thread chama função incr e apresenta o valor retornado. Qual possivel cenário de execução caso o sistema operacional determine um quantum de execução ou permita que a thread libere o voluntariamente o processador.

 

unsigned int count = 0;   // Váriavel global

const int iterations  = 1000000000;  //variavel global

unsigned int incr (void)

 

{

     int i;

     for (i=0; i<iterations; i++)

           count ++;

     return count;

}

 

 

Me ajudem!!!


4 resposta(s) - Contém resposta de Especialista

User badge image

RD Resoluções Verified user icon

Há mais de um mês

Temos que:

VAR Acesso: Semaforo := 1;

Exclusao: Semaforo := 1;

Nleitores: integer := 0;

PROCEDURE

Escritor; BEGIN

ProduzDado;

DOWN (Acesso);

Escreve; UP (Acesso); END;

PROCEDURE Leitor; BEGIN DOWN (Exclusao);

Nleitores := Nleitores + 1; IF ( Nleitores = 1 ) THEN DOWN (Acesso);

UP (Exclusao)

Temos que:

VAR Acesso: Semaforo := 1;

Exclusao: Semaforo := 1;

Nleitores: integer := 0;

PROCEDURE

Escritor; BEGIN

ProduzDado;

DOWN (Acesso);

Escreve; UP (Acesso); END;

PROCEDURE Leitor; BEGIN DOWN (Exclusao);

Nleitores := Nleitores + 1; IF ( Nleitores = 1 ) THEN DOWN (Acesso);

UP (Exclusao)

User badge image

Andre

Há mais de um mês

Temos que:

VAR Acesso: Semaforo := 1;

Exclusao: Semaforo := 1;

Nleitores: integer := 0;

PROCEDURE

Escritor; BEGIN

ProduzDado;

DOWN (Acesso);

Escreve; UP (Acesso); END;

PROCEDURE Leitor; BEGIN DOWN (Exclusao);

Nleitores := Nleitores + 1; IF ( Nleitores = 1 ) THEN DOWN (Acesso);

UP (Exclusao)

User badge image

Vital

Há mais de um mês

são pequenas tarefas que o computador precisa executar de forma concorrente, ou seja, operações que um ou mais programas abertos precisam realizar e disputam pela "atenção" do processador

User badge image

Andre

Há mais de um mês

Temos que:

VAR Acesso: Semaforo := 1;

Exclusao: Semaforo := 1;

Nleitores: integer := 0;

PROCEDURE

Escritor; BEGIN

ProduzDado;

DOWN (Acesso);

Escreve; UP (Acesso); END;

PROCEDURE Leitor; BEGIN DOWN (Exclusao);

Nleitores := Nleitores + 1; IF ( Nleitores = 1 ) THEN DOWN (Acesso);

UP (Exclusao)

Essa pergunta já foi respondida por um dos nossos especialistas