SlideShare una empresa de Scribd logo
1 de 45
Threads: O problema dos Leitores e Escritores Implementado em C# ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Threads ,[object Object],[object Object],[object Object]
Threads e Processos – Diferenças ,[object Object],[object Object],[object Object],[object Object],[object Object]
Threads:  O Universo dos modelos de processos ,[object Object],[object Object],[object Object],[object Object]
Threads:  O Universo dos modelos de processos ,[object Object],[object Object],[object Object],[object Object]
Threads e Processos – Diferenças ,[object Object],[object Object]
Threads:  O Universo dos modelos de processos ,[object Object],[object Object],[object Object]
Threads:  Sistemas monothread e multithread ,[object Object],[object Object],[object Object]
Threads:  O Universo dos modelos de processos ,[object Object],[object Object],[object Object]
Threads:  Tipos (Usuário e Núcleo) ,[object Object],[object Object],[object Object],[object Object]
Threads:  Tipos (Usuário e Núcleo) ,[object Object],[object Object],[object Object],[object Object],[object Object]
Threads:  Tipos (Usuário e Núcleo) ,[object Object],[object Object],[object Object],[object Object]
Threads:  Tipos (Usuário e Núcleo) ,[object Object],[object Object],[object Object],[object Object]
Threads:  Comunicação entre as Threads ,[object Object],[object Object],[object Object]
Threads:  Comunicação entre as Threads ,[object Object],[object Object],[object Object]
Threads:  Comunicação entre as Threads ,[object Object],[object Object],[object Object]
Threads:  Comunicação entre as Threads ,[object Object],[object Object],[object Object],[object Object]
Threads:  Comunicação entre as Threads ,[object Object],[object Object],[object Object]
Threads:  Comunicação entre as Threads ,[object Object],[object Object],[object Object],[object Object],[object Object]
Threads:  Problemas com o uso de threads ,[object Object],[object Object],[object Object],[object Object],[object Object]
Threads:  Problemas com o uso de threads ,[object Object],[object Object],[object Object],[object Object]
O Problema dos Leitores e Escritores ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
O Problema dos Leitores e Escritores ,[object Object],Base  de  Dados PL PL PL PE PL – Processos Leitores PE – Processos Escritores Esperando Acesso a Base de Dados Acessando a Base de Dados 1 2 4 3
O Problema dos Leitores e Escritores ,[object Object],Base de Dados PL PL PL Base de Dados PL PL PL 1 2 4 PL PL PL 1 2 4 6 9 7 PL – Processos Leitores PE – Processos Escritores Esperando Acesso a Base de Dados Acessando a Base de Dados
O Problema dos Leitores e Escritores ,[object Object],Base de Dados PL PL Base de Dados PL PL PL 1 2 PL PL PE 1 2 4 6 9 7 PE 4 PL – Processos Leitores PE – Processos Escritores Esperando Acesso a Base de Dados Acessando a Base de Dados
O Problema dos Leitores e Escritores ,[object Object]
O Problema dos Leitores e Escritores ,[object Object],Base de Dados Base de Dados PE 4 PL – Processos Leitores PE – Processos Escritores Esperando Acesso a Base de Dados Acessando a Base de Dados
O Problema dos Leitores e Escritores ,[object Object],Base  de  Dados PL PL PE PE 1 2 4 3 PL – Processos Leitores PE – Processos Escritores Esperando Acesso a Base de Dados Acessando a Base de Dados
O Problema dos Leitores e Escritores ,[object Object],semaphore mutex = 1;  // controla acesso a região critica semaphore db = 1;  // controla acesso a base de dados int rc = 0;  // número de processos lendo ou querendo ler void writer(void) { while (TRUE) {   // repete para sempre think_up_data();  // região não critica down(&db);   // obtém acesso exclusivo write_data_base(); // atualiza os dados up(&db);  // libera o acesso exclusivo } } Variáveis Procedimento do Escritor
O Problema dos Leitores e Escritores void reader(void) { while(TRUE) { // repete para sempre down(&mutex);  // obtém acesso exclusivo a região critica rc = rc + 1; // um leitor a mais agora if (rc == 1) down(&db);  //se este for o primeiro leitor bloqueia a base de dados up(&mutex)   // libera o acesso a região critica  read_data_base();  //acesso aos dados down(&mutex);  // obtém acesso exclusivo a região critica rc = rc -1;   // menos um leitor if (rc == 0) up(&db); // se este for o último leitor libera a base de dados up(&mutex)  // libera o acesso a região critica use_data_read();  // utiliza o dado } } Procedimento do Leitor
O Problema dos Leitores e Escritores ,[object Object],[object Object],[object Object],[object Object],[object Object]
Threads no C# ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Threads no C#: Criando e Iniciando ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Threads no C#: Exemplo Olá Mundo ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Threads no C#: Sincronização ,[object Object],[object Object],[object Object],[object Object]
Threads no C#: Método  Join class Ola_Mundo { static void Main() { Thread t = new Thread(new ThreadStart(Imprime)); t.Start(); t.Join(); Console.WriteLine("Fim do programa."); } static void Imprime() { Console.WriteLine("Ola Mundo!"); } }
Threads no C#: Bloqueio  Lock ,[object Object],[object Object],[object Object],[object Object]
Threads no C#: Bloqueio  Lock ,[object Object],[object Object],[object Object],[object Object]
Threads no C#: Classe  Mutex ,[object Object],[object Object],[object Object],[object Object]
Threads no C#: Classe  Mutex ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Threads no C#: Classe  Semaphore ,[object Object],[object Object],[object Object],[object Object]
Threads no C#: Classe  Semaphore ,[object Object],[object Object],[object Object],[object Object]
Threads no C#: Classe  Monitor ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Threads no C#: Outros recursos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Threads no C#:  Os leitores e escritores ,[object Object]

Más contenido relacionado

La actualidad más candente

Sistemas Operacionais Processos e Threads - Wellington Pinto de Oliveira
Sistemas Operacionais Processos e Threads - Wellington Pinto de OliveiraSistemas Operacionais Processos e Threads - Wellington Pinto de Oliveira
Sistemas Operacionais Processos e Threads - Wellington Pinto de OliveiraWellington Oliveira
 
Apostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em LinuxApostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em Linuxeliezer
 
Apostila 5 processos e threads
Apostila 5   processos e threadsApostila 5   processos e threads
Apostila 5 processos e threadsPaulo Fonseca
 
Linux Redes e Servidores - guia pratico
Linux  Redes e Servidores - guia pratico Linux  Redes e Servidores - guia pratico
Linux Redes e Servidores - guia pratico SoftD Abreu
 
Redes e servidores guia pratico 2ªedição por carlos e morimoto
Redes e servidores   guia pratico 2ªedição por carlos e morimotoRedes e servidores   guia pratico 2ªedição por carlos e morimoto
Redes e servidores guia pratico 2ªedição por carlos e morimotoPessoal
 
Aula sobre multithreading
Aula sobre multithreadingAula sobre multithreading
Aula sobre multithreadingBianca Dantas
 
Visão Geral: Introdução
Visão Geral: IntroduçãoVisão Geral: Introdução
Visão Geral: IntroduçãoAlexandre Duarte
 
2009 1 - sistemas operacionais - aula 5 - semaforos e problemas classicos
2009 1 - sistemas operacionais - aula 5 - semaforos e problemas classicos2009 1 - sistemas operacionais - aula 5 - semaforos e problemas classicos
2009 1 - sistemas operacionais - aula 5 - semaforos e problemas classicosComputação Depressão
 
Trabalho de sistemas operativos
Trabalho de sistemas operativosTrabalho de sistemas operativos
Trabalho de sistemas operativosFrank macoo
 
2009 1 - sistemas operacionais - aula 4 - threads e comunicacao entre processos
2009 1 - sistemas operacionais - aula 4 - threads e comunicacao entre processos2009 1 - sistemas operacionais - aula 4 - threads e comunicacao entre processos
2009 1 - sistemas operacionais - aula 4 - threads e comunicacao entre processosComputação Depressão
 
Guia pratico-rede-e-servidores-linux
Guia pratico-rede-e-servidores-linuxGuia pratico-rede-e-servidores-linux
Guia pratico-rede-e-servidores-linuxFernando Mendes
 
Programação Paralela - Threads
Programação Paralela - ThreadsProgramação Paralela - Threads
Programação Paralela - ThreadsGlaucio Scheibel
 
Programação Concorrente - Objetos e Concorrência
Programação Concorrente - Objetos e ConcorrênciaProgramação Concorrente - Objetos e Concorrência
Programação Concorrente - Objetos e ConcorrênciaFabio Moura Pereira
 

La actualidad más candente (19)

Sistemas Operacionais Processos e Threads - Wellington Pinto de Oliveira
Sistemas Operacionais Processos e Threads - Wellington Pinto de OliveiraSistemas Operacionais Processos e Threads - Wellington Pinto de Oliveira
Sistemas Operacionais Processos e Threads - Wellington Pinto de Oliveira
 
Curso openmp
Curso openmpCurso openmp
Curso openmp
 
Memória Compartilhada Distribuída Conceitos e Algoritmos
Memória Compartilhada Distribuída Conceitos e AlgoritmosMemória Compartilhada Distribuída Conceitos e Algoritmos
Memória Compartilhada Distribuída Conceitos e Algoritmos
 
Apostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em LinuxApostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em Linux
 
Apostila 5 processos e threads
Apostila 5   processos e threadsApostila 5   processos e threads
Apostila 5 processos e threads
 
Linux Redes e Servidores - guia pratico
Linux  Redes e Servidores - guia pratico Linux  Redes e Servidores - guia pratico
Linux Redes e Servidores - guia pratico
 
Redes e servidores guia pratico 2ªedição por carlos e morimoto
Redes e servidores   guia pratico 2ªedição por carlos e morimotoRedes e servidores   guia pratico 2ªedição por carlos e morimoto
Redes e servidores guia pratico 2ªedição por carlos e morimoto
 
Aula sobre multithreading
Aula sobre multithreadingAula sobre multithreading
Aula sobre multithreading
 
Visão Geral: Introdução
Visão Geral: IntroduçãoVisão Geral: Introdução
Visão Geral: Introdução
 
Pesl latex
Pesl latexPesl latex
Pesl latex
 
Exercício 04 alunos
Exercício 04 alunosExercício 04 alunos
Exercício 04 alunos
 
2009 1 - sistemas operacionais - aula 5 - semaforos e problemas classicos
2009 1 - sistemas operacionais - aula 5 - semaforos e problemas classicos2009 1 - sistemas operacionais - aula 5 - semaforos e problemas classicos
2009 1 - sistemas operacionais - aula 5 - semaforos e problemas classicos
 
Trabalho de sistemas operativos
Trabalho de sistemas operativosTrabalho de sistemas operativos
Trabalho de sistemas operativos
 
2009 1 - sistemas operacionais - aula 4 - threads e comunicacao entre processos
2009 1 - sistemas operacionais - aula 4 - threads e comunicacao entre processos2009 1 - sistemas operacionais - aula 4 - threads e comunicacao entre processos
2009 1 - sistemas operacionais - aula 4 - threads e comunicacao entre processos
 
Guia pratico-rede-e-servidores-linux
Guia pratico-rede-e-servidores-linuxGuia pratico-rede-e-servidores-linux
Guia pratico-rede-e-servidores-linux
 
Introdução à sistemas distribuídos
Introdução à sistemas distribuídosIntrodução à sistemas distribuídos
Introdução à sistemas distribuídos
 
Programação Paralela - Threads
Programação Paralela - ThreadsProgramação Paralela - Threads
Programação Paralela - Threads
 
Programação Concorrente - Objetos e Concorrência
Programação Concorrente - Objetos e ConcorrênciaProgramação Concorrente - Objetos e Concorrência
Programação Concorrente - Objetos e Concorrência
 
Computadores
ComputadoresComputadores
Computadores
 

Destacado

C# 6.0 - Novos Recursos (Agosto/2015)
C# 6.0 - Novos Recursos (Agosto/2015)C# 6.0 - Novos Recursos (Agosto/2015)
C# 6.0 - Novos Recursos (Agosto/2015)Renato Groff
 
UMA PERSPECTIVA HISTÓRIA DA PRÁTICA PEDAGÓGICA
UMA PERSPECTIVA HISTÓRIA DA PRÁTICA PEDAGÓGICAUMA PERSPECTIVA HISTÓRIA DA PRÁTICA PEDAGÓGICA
UMA PERSPECTIVA HISTÓRIA DA PRÁTICA PEDAGÓGICALeandro Carneiro
 
Mutexes, Monitores e Semáforos
Mutexes, Monitores e SemáforosMutexes, Monitores e Semáforos
Mutexes, Monitores e SemáforosThiago Poiani
 
Concepções do Conhecimento
Concepções do ConhecimentoConcepções do Conhecimento
Concepções do Conhecimentokarinaabreu
 
A Arte De Educar Com Limites, Sem Medo De Errar.
A Arte De Educar Com Limites, Sem Medo De Errar.A Arte De Educar Com Limites, Sem Medo De Errar.
A Arte De Educar Com Limites, Sem Medo De Errar.dilsoncatarino
 
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”Rogério Moraes de Carvalho
 
C# 6.0 .net coders
C# 6.0   .net codersC# 6.0   .net coders
C# 6.0 .net codersRenato Groff
 
Tecnologia na Educação e Novas Tendência
Tecnologia na Educação e Novas TendênciaTecnologia na Educação e Novas Tendência
Tecnologia na Educação e Novas TendênciaDaniel Caixeta
 
Indisciplina escolar -_acoes_e_intervencoes
Indisciplina escolar -_acoes_e_intervencoesIndisciplina escolar -_acoes_e_intervencoes
Indisciplina escolar -_acoes_e_intervencoesRafaela Freitas
 
Estruturas de Dados em C#
Estruturas de Dados em C#Estruturas de Dados em C#
Estruturas de Dados em C#Marcelo Charan
 
Sistemas de equações
 Sistemas de equações Sistemas de equações
Sistemas de equaçõesmarilia65
 
Programação c# - banco de dados
Programação   c# - banco de dadosProgramação   c# - banco de dados
Programação c# - banco de dadosdouglasschaefler
 
Direitos e garantias fundamentais (parte 1)
Direitos e garantias fundamentais (parte 1)Direitos e garantias fundamentais (parte 1)
Direitos e garantias fundamentais (parte 1)Nilberte
 
Ler E Escrever Na Escola
Ler E Escrever Na EscolaLer E Escrever Na Escola
Ler E Escrever Na EscolaMaristela Couto
 

Destacado (20)

C# 6.0 - Novos Recursos (Agosto/2015)
C# 6.0 - Novos Recursos (Agosto/2015)C# 6.0 - Novos Recursos (Agosto/2015)
C# 6.0 - Novos Recursos (Agosto/2015)
 
UMA PERSPECTIVA HISTÓRIA DA PRÁTICA PEDAGÓGICA
UMA PERSPECTIVA HISTÓRIA DA PRÁTICA PEDAGÓGICAUMA PERSPECTIVA HISTÓRIA DA PRÁTICA PEDAGÓGICA
UMA PERSPECTIVA HISTÓRIA DA PRÁTICA PEDAGÓGICA
 
Mutexes, Monitores e Semáforos
Mutexes, Monitores e SemáforosMutexes, Monitores e Semáforos
Mutexes, Monitores e Semáforos
 
Processos e threads cap 02 (i unidade)
Processos e threads   cap 02 (i unidade)Processos e threads   cap 02 (i unidade)
Processos e threads cap 02 (i unidade)
 
Concepções do Conhecimento
Concepções do ConhecimentoConcepções do Conhecimento
Concepções do Conhecimento
 
A Arte De Educar Com Limites, Sem Medo De Errar.
A Arte De Educar Com Limites, Sem Medo De Errar.A Arte De Educar Com Limites, Sem Medo De Errar.
A Arte De Educar Com Limites, Sem Medo De Errar.
 
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”
 
C# 6.0 .net coders
C# 6.0   .net codersC# 6.0   .net coders
C# 6.0 .net coders
 
Tecnologia na Educação e Novas Tendência
Tecnologia na Educação e Novas TendênciaTecnologia na Educação e Novas Tendência
Tecnologia na Educação e Novas Tendência
 
Exercicios de C#
Exercicios de C#Exercicios de C#
Exercicios de C#
 
Introducao ao C#
Introducao ao C#Introducao ao C#
Introducao ao C#
 
Marketing Infantil
Marketing InfantilMarketing Infantil
Marketing Infantil
 
Indisciplina escolar -_acoes_e_intervencoes
Indisciplina escolar -_acoes_e_intervencoesIndisciplina escolar -_acoes_e_intervencoes
Indisciplina escolar -_acoes_e_intervencoes
 
Interacionismo E Letramento
Interacionismo E LetramentoInteracionismo E Letramento
Interacionismo E Letramento
 
Estruturas de Dados em C#
Estruturas de Dados em C#Estruturas de Dados em C#
Estruturas de Dados em C#
 
Sistemas de equações
 Sistemas de equações Sistemas de equações
Sistemas de equações
 
Programação c# - banco de dados
Programação   c# - banco de dadosProgramação   c# - banco de dados
Programação c# - banco de dados
 
Estado Islâmico
Estado IslâmicoEstado Islâmico
Estado Islâmico
 
Direitos e garantias fundamentais (parte 1)
Direitos e garantias fundamentais (parte 1)Direitos e garantias fundamentais (parte 1)
Direitos e garantias fundamentais (parte 1)
 
Ler E Escrever Na Escola
Ler E Escrever Na EscolaLer E Escrever Na Escola
Ler E Escrever Na Escola
 

Similar a Apresentação do artigo THREADS: O PROBLEMA DOS LEITORES E ESCRITORES IMPLEMENTADO EM C#

SD_Aula_04_Introdução ao SD.pdf
SD_Aula_04_Introdução ao SD.pdfSD_Aula_04_Introdução ao SD.pdf
SD_Aula_04_Introdução ao SD.pdfFerro Gaita
 
Processos e threads
Processos e threadsProcessos e threads
Processos e threadsSilvino Neto
 
Threads - .Net Framework 4.0
Threads - .Net Framework 4.0Threads - .Net Framework 4.0
Threads - .Net Framework 4.0Charles Fortes
 
(ACH2044) Sistemas Operacionais - Aula 08
(ACH2044) Sistemas Operacionais - Aula 08(ACH2044) Sistemas Operacionais - Aula 08
(ACH2044) Sistemas Operacionais - Aula 08Norton Trevisan Roman
 
Escalonamento no Windows
Escalonamento no WindowsEscalonamento no Windows
Escalonamento no WindowsFee Kosta
 
Gerências de Processos: Sincronização
Gerências de Processos: SincronizaçãoGerências de Processos: Sincronização
Gerências de Processos: SincronizaçãoAlexandre Duarte
 
Componentes do Sistema operacional
Componentes do Sistema operacional Componentes do Sistema operacional
Componentes do Sistema operacional Rodrigo Rodrigues
 
SI - Processos, Threads, Virtualização e Migração de Código
SI - Processos, Threads, Virtualização e Migração de CódigoSI - Processos, Threads, Virtualização e Migração de Código
SI - Processos, Threads, Virtualização e Migração de CódigoFrederico Madeira
 
Delphi Conference 2012 - Controlando a Concorrência em Aplicações Multi-Thread
Delphi Conference 2012 - Controlando a Concorrência em Aplicações Multi-ThreadDelphi Conference 2012 - Controlando a Concorrência em Aplicações Multi-Thread
Delphi Conference 2012 - Controlando a Concorrência em Aplicações Multi-ThreadMario Guedes
 
Java recursos avançados - multithreading
Java   recursos avançados - multithreadingJava   recursos avançados - multithreading
Java recursos avançados - multithreadingArmando Daniel
 
Aula - Redes peer to peer.pdf
Aula - Redes peer to peer.pdfAula - Redes peer to peer.pdf
Aula - Redes peer to peer.pdfMarcondesTiburcio
 

Similar a Apresentação do artigo THREADS: O PROBLEMA DOS LEITORES E ESCRITORES IMPLEMENTADO EM C# (20)

SD_Aula_04_Introdução ao SD.pdf
SD_Aula_04_Introdução ao SD.pdfSD_Aula_04_Introdução ao SD.pdf
SD_Aula_04_Introdução ao SD.pdf
 
04 threads
04 threads04 threads
04 threads
 
Sistemas operacionais
Sistemas operacionaisSistemas operacionais
Sistemas operacionais
 
Sistemas operativos distribuidos
Sistemas operativos distribuidosSistemas operativos distribuidos
Sistemas operativos distribuidos
 
Processos e threads
Processos e threadsProcessos e threads
Processos e threads
 
Threads - .Net Framework 4.0
Threads - .Net Framework 4.0Threads - .Net Framework 4.0
Threads - .Net Framework 4.0
 
(ACH2044) Sistemas Operacionais - Aula 08
(ACH2044) Sistemas Operacionais - Aula 08(ACH2044) Sistemas Operacionais - Aula 08
(ACH2044) Sistemas Operacionais - Aula 08
 
Processos e threads
Processos e threadsProcessos e threads
Processos e threads
 
Net - Threads
Net - ThreadsNet - Threads
Net - Threads
 
Escalonamento no Windows
Escalonamento no WindowsEscalonamento no Windows
Escalonamento no Windows
 
Processos+threads.2pp
Processos+threads.2ppProcessos+threads.2pp
Processos+threads.2pp
 
Gerências de Processos: Sincronização
Gerências de Processos: SincronizaçãoGerências de Processos: Sincronização
Gerências de Processos: Sincronização
 
Componentes do Sistema operacional
Componentes do Sistema operacional Componentes do Sistema operacional
Componentes do Sistema operacional
 
SI - Processos, Threads, Virtualização e Migração de Código
SI - Processos, Threads, Virtualização e Migração de CódigoSI - Processos, Threads, Virtualização e Migração de Código
SI - Processos, Threads, Virtualização e Migração de Código
 
Sistemas operacionais - aula8
Sistemas operacionais - aula8Sistemas operacionais - aula8
Sistemas operacionais - aula8
 
Threads
ThreadsThreads
Threads
 
Sd01 (si) sistemas de arquivos
Sd01 (si)   sistemas de arquivosSd01 (si)   sistemas de arquivos
Sd01 (si) sistemas de arquivos
 
Delphi Conference 2012 - Controlando a Concorrência em Aplicações Multi-Thread
Delphi Conference 2012 - Controlando a Concorrência em Aplicações Multi-ThreadDelphi Conference 2012 - Controlando a Concorrência em Aplicações Multi-Thread
Delphi Conference 2012 - Controlando a Concorrência em Aplicações Multi-Thread
 
Java recursos avançados - multithreading
Java   recursos avançados - multithreadingJava   recursos avançados - multithreading
Java recursos avançados - multithreading
 
Aula - Redes peer to peer.pdf
Aula - Redes peer to peer.pdfAula - Redes peer to peer.pdf
Aula - Redes peer to peer.pdf
 

Apresentação do artigo THREADS: O PROBLEMA DOS LEITORES E ESCRITORES IMPLEMENTADO EM C#

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30. O Problema dos Leitores e Escritores void reader(void) { while(TRUE) { // repete para sempre down(&mutex); // obtém acesso exclusivo a região critica rc = rc + 1; // um leitor a mais agora if (rc == 1) down(&db); //se este for o primeiro leitor bloqueia a base de dados up(&mutex) // libera o acesso a região critica read_data_base(); //acesso aos dados down(&mutex); // obtém acesso exclusivo a região critica rc = rc -1; // menos um leitor if (rc == 0) up(&db); // se este for o último leitor libera a base de dados up(&mutex) // libera o acesso a região critica use_data_read(); // utiliza o dado } } Procedimento do Leitor
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36. Threads no C#: Método Join class Ola_Mundo { static void Main() { Thread t = new Thread(new ThreadStart(Imprime)); t.Start(); t.Join(); Console.WriteLine("Fim do programa."); } static void Imprime() { Console.WriteLine("Ola Mundo!"); } }
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.