SlideShare ist ein Scribd-Unternehmen logo
1 von 39
THE POWER OF
             THREADS
Charles Fortes | Rogério Ohashi
                    17 de Maio de 2012




            @CharlesFortes
            @ohashidotnet
Avaliação da Palestra
http://tinyurl.com/infotechdia17


@CharlesFortes
RÁPIDA E BÁSICA INTRODUÇÃO
AO CONCEITO DE THREADS
Basicamente é processo dividir a si
mesmo em duas ou mais tarefas que
podem ser executadas concorrentemente
2           2




1   1           1   1




    3




        Tempo
O suporte a threads é fornecido
pelo Sistema Operacional
O sistema operacional enfilera os processos e os
        executa conforme sua prioridade
O kernel controla a fila de processamento
    executando um pouco de cada processo,
Quando o computador possui apenas um núcleo,
   ele alterna tão rapidamente que da a
impressão de estar sendo executado ao mesmo
                    tempo.
Single Core




3   Sleeping




2   Sleeping




1   Running
Single Core




1   Sleeping




3   Sleeping




2   Running
Dual Core




3
    Sleeping




1              2
    Running        Runing
Dual Core




2
    Sleeping




3              1
    Running        Runing
Isto permite você navegar na
Web enquanto ouve música
Quando trabalhamos com
paralelismo a nível de aplicativo,
  nós damos o nome de threads
2           2




1   1           1   1




    3




        Tempo
Cada thread tem o mesmo contexto de software
e compartilha o mesmo espaço de memória
(endereçado a um mesmo processo-pai)
Sendo assim o overhead causado pelo
escalonamento de uma thread é muito menor
   do que o escalonamento de processos.
"quando uma thread está à espera de determinado dispositivo
 de entrada/saída ou qualquer outro recurso do sistema, o
 processo como um todo não fica parado, pois quando uma
thread entra no estado de 'bloqueio', uma outra thread aguarda
                na fila de prontos para executar."
Uma thread pode assumir os seguintes
                  estados:


•Unstarted: logo após ser criada (antes do
Start());

•Running: após ser ativada (Start()) ou após
método Resume();

•Suspended: após método Suspended();
•Stopped: após método Abort().
As principais principais beneficios que podemos tirar
de um sistema que usa MultiThreads são....



processamento de dados paralelos para economia de
tempo




manter a aplicação "destravada"
enquanto processa
Programando paralelismo no .NET
Task Parallel Library


                                 PLINQ


Data Structures for Parallel
Programming
Data Structures for Parallel
Programming




A versão. NET Framework 4 introduz vários novos tipos
que são úteis em programação paralela, incluindo um
conjunto de classes para tratar coleções de classes
concorrentes, e controles de sincronização, além de
Lazy Load para classes.
Data Structures for Parallel
Programming




Você pode usar esses tipos com qualquer código de aplicativo de vários segmentos, incluindo
a biblioteca paralela de tarefas e PLINQ.
Data Structures for Parallel
Programming




   O namespace System.Collections.Concurrent
   fornece uma forma de adicionar e remover itens
   de uma lista sem se preocupar com a
   concorrencia de acesso a lista e sem a
   necessidade de se construir seu próprio controle
   de locks
Data Structures for Parallel
Programming




    Os mecanismos de LazyLoad para classes,
    permite que o .NET apenas aloque o objeto
           na memória no momento em que for
         necessário sua utilização, o que pode
     melhorar o desempenho significativamente
Task Parallel Library

  É um conjunto de APIs e Typos disponiveis
  nos namespaces System.Threading e
  System.Threading.Tasks



               Seu objetivo é facilitar e agilizar o
               processo de desenvolvimento de
               funções paralelas
Task Parallel Library

  Com ela conseguimos controlar a
  execução das tarefas paralelas, Agendar a
  execução das tarefas pelo ThreadPool,
  funções de cancelamento, gerenciamento
  de estados e outros




                  Seu objetivo é facilitar e agilizar o
                  processo de desenvolvimento de
                  funções paralelas
Task Parallel Library

  Apenas deve-se tomar cuidado pois o custo
  de criar e gerir threads, para operações de
  loop por exemplo, onde o trabalho é muito
  pequeno, pode ser muito mais lento do que
  usar o for em sí.
Task Parallel Library




        Criar o paralelismo de Tarefas é muito fácil.
        Você pode optar por disparar vários métodos
        em paralelo com o Parallel.Invoke, ou criar
        uma task explicitamente.
Task Parallel Library

Parallel.Invoke(() => DoSomeWork(), () => DoSomeOtherWork());




// Create a task and supply a user delegate by using a lambda expression.
            var taskA = new Task(() => Console.WriteLine("Hello from
taskA."));

            // Start the task.
            taskA.Start();

            // Output a message from the joining thread.
            Console.WriteLine("Hello from the calling thread.");
           /* Output:
             * Hello from the joining thread.
             * Hello from taskA.
             */
Task Parallel Library




  Da mesma forma, manipular loops fica muito fácil
Task Parallel Library

// Sequential version
foreach (var item in sourceCollection)
{
    Process(item);
}

// Parallel equivalent
Parallel.ForEach(sourceCollection, item =>
Process(item));
PLINQ



O PLINQ é uma extensão do LINQ introduzido
no .NET 3.0, fornecendo métodos de paralelismo
para iteração com coleções
PLINQ



var nums = Enumerable.Range(10, 10000);



var query = from num in nums.AsParallel()
            where num % 10 == 0
            select num;
DEMOS
PERGUNTAS?
Threads - .Net Framework 4.0

Weitere ähnliche Inhalte

Was ist angesagt?

Apostila 5 processos e threads
Apostila 5   processos e threadsApostila 5   processos e threads
Apostila 5 processos e threadsPaulo Fonseca
 
Arquitetura de Computadores: Processos e Threads
Arquitetura de Computadores: Processos e ThreadsArquitetura de Computadores: Processos e Threads
Arquitetura de Computadores: Processos e ThreadsEvandro Júnior
 
Aula 02-processos-e-threads-tanenbaum-parte-2
Aula 02-processos-e-threads-tanenbaum-parte-2Aula 02-processos-e-threads-tanenbaum-parte-2
Aula 02-processos-e-threads-tanenbaum-parte-2Cristiano Pires Martins
 
Luarocks 2.0 - talk at Lua Workshop 2009
Luarocks 2.0 - talk at Lua Workshop 2009Luarocks 2.0 - talk at Lua Workshop 2009
Luarocks 2.0 - talk at Lua Workshop 2009Hisham Muhammad
 
Sistemas Operativos - Processos e Threads
Sistemas Operativos - Processos e ThreadsSistemas Operativos - Processos e Threads
Sistemas Operativos - Processos e ThreadsPedro De Almeida
 
Gerência de Processos: Processos
Gerência de Processos: ProcessosGerência de Processos: Processos
Gerência de Processos: ProcessosAlexandre Duarte
 
Programação Paralela - Threads
Programação Paralela - ThreadsProgramação Paralela - Threads
Programação Paralela - ThreadsGlaucio Scheibel
 
Multithreaded tecnologia
Multithreaded tecnologia Multithreaded tecnologia
Multithreaded tecnologia J Chaves Silva
 
Gerências de Processos: Sincronização
Gerências de Processos: SincronizaçãoGerências de Processos: Sincronização
Gerências de Processos: SincronizaçãoAlexandre Duarte
 
Elementos do Sistema Operacionais
Elementos do Sistema OperacionaisElementos do Sistema Operacionais
Elementos do Sistema OperacionaisJailson Torquato
 
Tomcat e Aplicações Web
Tomcat e Aplicações WebTomcat e Aplicações Web
Tomcat e Aplicações Webelliando dias
 
Mutexes, Monitores e Semáforos
Mutexes, Monitores e SemáforosMutexes, Monitores e Semáforos
Mutexes, Monitores e SemáforosThiago Poiani
 
Sistemas Operacionais - Aula 06 (Estrutura do S.O)
Sistemas Operacionais - Aula 06 (Estrutura do S.O)Sistemas Operacionais - Aula 06 (Estrutura do S.O)
Sistemas Operacionais - Aula 06 (Estrutura do S.O)Leinylson Fontinele
 
O protocolo ftp (file transfer protocol)
O protocolo ftp (file transfer protocol)O protocolo ftp (file transfer protocol)
O protocolo ftp (file transfer protocol)ErikHR
 

Was ist angesagt? (20)

F oc aula_04
F oc aula_04F oc aula_04
F oc aula_04
 
Apostila 5 processos e threads
Apostila 5   processos e threadsApostila 5   processos e threads
Apostila 5 processos e threads
 
Arquitetura de Computadores: Processos e Threads
Arquitetura de Computadores: Processos e ThreadsArquitetura de Computadores: Processos e Threads
Arquitetura de Computadores: Processos e Threads
 
Processos e threads
Processos e threadsProcessos e threads
Processos e threads
 
Aula 02-processos-e-threads-tanenbaum-parte-2
Aula 02-processos-e-threads-tanenbaum-parte-2Aula 02-processos-e-threads-tanenbaum-parte-2
Aula 02-processos-e-threads-tanenbaum-parte-2
 
Luarocks 2.0 - talk at Lua Workshop 2009
Luarocks 2.0 - talk at Lua Workshop 2009Luarocks 2.0 - talk at Lua Workshop 2009
Luarocks 2.0 - talk at Lua Workshop 2009
 
Sistemas Operativos - Processos e Threads
Sistemas Operativos - Processos e ThreadsSistemas Operativos - Processos e Threads
Sistemas Operativos - Processos e Threads
 
Gerência de Processos: Processos
Gerência de Processos: ProcessosGerência de Processos: Processos
Gerência de Processos: Processos
 
Programação Paralela - Threads
Programação Paralela - ThreadsProgramação Paralela - Threads
Programação Paralela - Threads
 
Wisher
WisherWisher
Wisher
 
Thread Java
Thread JavaThread Java
Thread Java
 
Multithreaded tecnologia
Multithreaded tecnologia Multithreaded tecnologia
Multithreaded tecnologia
 
Gerências de Processos: Sincronização
Gerências de Processos: SincronizaçãoGerências de Processos: Sincronização
Gerências de Processos: Sincronização
 
Elementos do Sistema Operacionais
Elementos do Sistema OperacionaisElementos do Sistema Operacionais
Elementos do Sistema Operacionais
 
04 threads
04 threads04 threads
04 threads
 
Tomcat e Aplicações Web
Tomcat e Aplicações WebTomcat e Aplicações Web
Tomcat e Aplicações Web
 
Contextos
ContextosContextos
Contextos
 
Mutexes, Monitores e Semáforos
Mutexes, Monitores e SemáforosMutexes, Monitores e Semáforos
Mutexes, Monitores e Semáforos
 
Sistemas Operacionais - Aula 06 (Estrutura do S.O)
Sistemas Operacionais - Aula 06 (Estrutura do S.O)Sistemas Operacionais - Aula 06 (Estrutura do S.O)
Sistemas Operacionais - Aula 06 (Estrutura do S.O)
 
O protocolo ftp (file transfer protocol)
O protocolo ftp (file transfer protocol)O protocolo ftp (file transfer protocol)
O protocolo ftp (file transfer protocol)
 

Andere mochten auch

IA - Apresentação do Professor
IA - Apresentação do ProfessorIA - Apresentação do Professor
IA - Apresentação do ProfessorCharles Fortes
 
LPC - Apresentação do Professor
LPC - Apresentação do ProfessorLPC - Apresentação do Professor
LPC - Apresentação do ProfessorCharles Fortes
 
Akatus - Biblioteca para Integração com .NET
Akatus - Biblioteca para Integração com .NETAkatus - Biblioteca para Integração com .NET
Akatus - Biblioteca para Integração com .NETCaique Dourado
 
Conhecendo a Plataforma .NET
Conhecendo a Plataforma .NETConhecendo a Plataforma .NET
Conhecendo a Plataforma .NETPedro Alves Jr.
 
Sistemas Operacionais - Aula 8 - Sincronização e Comunicação entre Processos
Sistemas Operacionais - Aula 8 - Sincronização e Comunicação entre ProcessosSistemas Operacionais - Aula 8 - Sincronização e Comunicação entre Processos
Sistemas Operacionais - Aula 8 - Sincronização e Comunicação entre ProcessosCharles Fortes
 
Programação Estruturada 2 - Apresentação do Professor
Programação Estruturada 2 - Apresentação do ProfessorProgramação Estruturada 2 - Apresentação do Professor
Programação Estruturada 2 - Apresentação do ProfessorCharles Fortes
 
IA - Introdução Inteligência Artificial
IA - Introdução Inteligência ArtificialIA - Introdução Inteligência Artificial
IA - Introdução Inteligência ArtificialCharles Fortes
 
PE1 - Revisão e Matéria sobre Laços (FOR, WHILE, DO-WHILE)
PE1 - Revisão e Matéria sobre Laços (FOR, WHILE, DO-WHILE)PE1 - Revisão e Matéria sobre Laços (FOR, WHILE, DO-WHILE)
PE1 - Revisão e Matéria sobre Laços (FOR, WHILE, DO-WHILE)Charles Fortes
 
Introdução a Desenvolvimento de Jogos HTML 5 para Windows 8 com Html5Quintus
Introdução a Desenvolvimento de Jogos HTML 5 para Windows 8 com Html5QuintusIntrodução a Desenvolvimento de Jogos HTML 5 para Windows 8 com Html5Quintus
Introdução a Desenvolvimento de Jogos HTML 5 para Windows 8 com Html5QuintusCharles Fortes
 
Sistemas Operacionais - Aula 9 - Gerencia de Recursos
Sistemas Operacionais - Aula 9 - Gerencia de RecursosSistemas Operacionais - Aula 9 - Gerencia de Recursos
Sistemas Operacionais - Aula 9 - Gerencia de RecursosCharles Fortes
 
Sistemas Operacionais - Aula 5 - Concorrência
Sistemas Operacionais - Aula 5 - ConcorrênciaSistemas Operacionais - Aula 5 - Concorrência
Sistemas Operacionais - Aula 5 - ConcorrênciaCharles Fortes
 
PE1 - Comandos de Decisão
PE1 - Comandos de DecisãoPE1 - Comandos de Decisão
PE1 - Comandos de DecisãoCharles Fortes
 
Introdução a robótica
Introdução a robóticaIntrodução a robótica
Introdução a robóticaCharles Fortes
 
PE-I - Apresentação Professor
PE-I - Apresentação ProfessorPE-I - Apresentação Professor
PE-I - Apresentação ProfessorCharles Fortes
 

Andere mochten auch (20)

Introdução ao TDD
Introdução ao TDDIntrodução ao TDD
Introdução ao TDD
 
Metodologias ageis
Metodologias ageisMetodologias ageis
Metodologias ageis
 
IA - Apresentação do Professor
IA - Apresentação do ProfessorIA - Apresentação do Professor
IA - Apresentação do Professor
 
LPC - Apresentação do Professor
LPC - Apresentação do ProfessorLPC - Apresentação do Professor
LPC - Apresentação do Professor
 
Akatus - Biblioteca para Integração com .NET
Akatus - Biblioteca para Integração com .NETAkatus - Biblioteca para Integração com .NET
Akatus - Biblioteca para Integração com .NET
 
Conhecendo a Plataforma .NET
Conhecendo a Plataforma .NETConhecendo a Plataforma .NET
Conhecendo a Plataforma .NET
 
Sistemas Operacionais - Aula 8 - Sincronização e Comunicação entre Processos
Sistemas Operacionais - Aula 8 - Sincronização e Comunicação entre ProcessosSistemas Operacionais - Aula 8 - Sincronização e Comunicação entre Processos
Sistemas Operacionais - Aula 8 - Sincronização e Comunicação entre Processos
 
Programação Estruturada 2 - Apresentação do Professor
Programação Estruturada 2 - Apresentação do ProfessorProgramação Estruturada 2 - Apresentação do Professor
Programação Estruturada 2 - Apresentação do Professor
 
IA - Introdução Inteligência Artificial
IA - Introdução Inteligência ArtificialIA - Introdução Inteligência Artificial
IA - Introdução Inteligência Artificial
 
PE1 - Revisão e Matéria sobre Laços (FOR, WHILE, DO-WHILE)
PE1 - Revisão e Matéria sobre Laços (FOR, WHILE, DO-WHILE)PE1 - Revisão e Matéria sobre Laços (FOR, WHILE, DO-WHILE)
PE1 - Revisão e Matéria sobre Laços (FOR, WHILE, DO-WHILE)
 
Introdução a Desenvolvimento de Jogos HTML 5 para Windows 8 com Html5Quintus
Introdução a Desenvolvimento de Jogos HTML 5 para Windows 8 com Html5QuintusIntrodução a Desenvolvimento de Jogos HTML 5 para Windows 8 com Html5Quintus
Introdução a Desenvolvimento de Jogos HTML 5 para Windows 8 com Html5Quintus
 
Sistemas Operacionais - Aula 9 - Gerencia de Recursos
Sistemas Operacionais - Aula 9 - Gerencia de RecursosSistemas Operacionais - Aula 9 - Gerencia de Recursos
Sistemas Operacionais - Aula 9 - Gerencia de Recursos
 
Sistemas Operacionais - Aula 5 - Concorrência
Sistemas Operacionais - Aula 5 - ConcorrênciaSistemas Operacionais - Aula 5 - Concorrência
Sistemas Operacionais - Aula 5 - Concorrência
 
Aula 1
Aula 1Aula 1
Aula 1
 
Lambda Expressions
Lambda ExpressionsLambda Expressions
Lambda Expressions
 
PE1 - Comandos de Decisão
PE1 - Comandos de DecisãoPE1 - Comandos de Decisão
PE1 - Comandos de Decisão
 
Introdução a robótica
Introdução a robóticaIntrodução a robótica
Introdução a robótica
 
PE-I - Apresentação Professor
PE-I - Apresentação ProfessorPE-I - Apresentação Professor
PE-I - Apresentação Professor
 
NoSQL & SQL
NoSQL & SQLNoSQL & SQL
NoSQL & SQL
 
MVC Pattern
MVC PatternMVC Pattern
MVC Pattern
 

Ähnlich wie Threads - .Net Framework 4.0

Aula sobre multithreading
Aula sobre multithreadingAula sobre multithreading
Aula sobre multithreadingBianca Dantas
 
Artigo Threads O Problema Dos Leitores E Escritores Implementado Em C# Rafael...
Artigo Threads O Problema Dos Leitores E Escritores Implementado Em C# Rafael...Artigo Threads O Problema Dos Leitores E Escritores Implementado Em C# Rafael...
Artigo Threads O Problema Dos Leitores E Escritores Implementado Em C# Rafael...rafaelov
 
Java recursos avançados - multithreading
Java   recursos avançados - multithreadingJava   recursos avançados - multithreading
Java recursos avançados - multithreadingArmando Daniel
 
Intro Arquitetura Oracle
Intro Arquitetura OracleIntro Arquitetura Oracle
Intro Arquitetura OraclePablo Garcia
 
Apresentação do artigo THREADS: O PROBLEMA DOS LEITORES E ESCRITORES IMPLEMEN...
Apresentação do artigo THREADS: O PROBLEMA DOS LEITORES E ESCRITORES IMPLEMEN...Apresentação do artigo THREADS: O PROBLEMA DOS LEITORES E ESCRITORES IMPLEMEN...
Apresentação do artigo THREADS: O PROBLEMA DOS LEITORES E ESCRITORES IMPLEMEN...rafaelov
 
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
 
Sistemas Operacionais
Sistemas OperacionaisSistemas Operacionais
Sistemas OperacionaisAdir Kuhn
 
Utilitários para Programação Concorrente em Java (2005)
Utilitários para Programação Concorrente em Java (2005)Utilitários para Programação Concorrente em Java (2005)
Utilitários para Programação Concorrente em Java (2005)Helder da Rocha
 
Programação Concorrente - Aula 03
Programação Concorrente - Aula 03Programação Concorrente - Aula 03
Programação Concorrente - Aula 03thomasdacosta
 
Componentes do Sistema operacional
Componentes do Sistema operacional Componentes do Sistema operacional
Componentes do Sistema operacional Rodrigo Rodrigues
 
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
 
Sistema Operacional de Tempo Real(vx works)
Sistema Operacional de Tempo Real(vx works)Sistema Operacional de Tempo Real(vx works)
Sistema Operacional de Tempo Real(vx works)Jose Silva
 
Desenvolvendo aplicações Web escaláveis
Desenvolvendo aplicações Web escaláveisDesenvolvendo aplicações Web escaláveis
Desenvolvendo aplicações Web escaláveiselliando dias
 

Ähnlich wie Threads - .Net Framework 4.0 (20)

Curso openmp
Curso openmpCurso openmp
Curso openmp
 
Net - Threads
Net - ThreadsNet - Threads
Net - Threads
 
Cakephp 2.0 - O que mudou
Cakephp 2.0 - O que mudouCakephp 2.0 - O que mudou
Cakephp 2.0 - O que mudou
 
SlackWare - Leonel
SlackWare - LeonelSlackWare - Leonel
SlackWare - Leonel
 
Aula sobre multithreading
Aula sobre multithreadingAula sobre multithreading
Aula sobre multithreading
 
Artigo Threads O Problema Dos Leitores E Escritores Implementado Em C# Rafael...
Artigo Threads O Problema Dos Leitores E Escritores Implementado Em C# Rafael...Artigo Threads O Problema Dos Leitores E Escritores Implementado Em C# Rafael...
Artigo Threads O Problema Dos Leitores E Escritores Implementado Em C# Rafael...
 
Java recursos avançados - multithreading
Java   recursos avançados - multithreadingJava   recursos avançados - multithreading
Java recursos avançados - multithreading
 
Intro Arquitetura Oracle
Intro Arquitetura OracleIntro Arquitetura Oracle
Intro Arquitetura Oracle
 
Apresentação do artigo THREADS: O PROBLEMA DOS LEITORES E ESCRITORES IMPLEMEN...
Apresentação do artigo THREADS: O PROBLEMA DOS LEITORES E ESCRITORES IMPLEMEN...Apresentação do artigo THREADS: O PROBLEMA DOS LEITORES E ESCRITORES IMPLEMEN...
Apresentação do artigo THREADS: O PROBLEMA DOS LEITORES E ESCRITORES IMPLEMEN...
 
S.o aula 1920
S.o aula 1920S.o aula 1920
S.o aula 1920
 
Grid com JPPF
Grid com JPPFGrid com JPPF
Grid com JPPF
 
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
 
Sistemas Operacionais
Sistemas OperacionaisSistemas Operacionais
Sistemas Operacionais
 
Utilitários para Programação Concorrente em Java (2005)
Utilitários para Programação Concorrente em Java (2005)Utilitários para Programação Concorrente em Java (2005)
Utilitários para Programação Concorrente em Java (2005)
 
Programação Concorrente - Aula 03
Programação Concorrente - Aula 03Programação Concorrente - Aula 03
Programação Concorrente - Aula 03
 
Componentes do Sistema operacional
Componentes do Sistema operacional Componentes do Sistema operacional
Componentes do Sistema operacional
 
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
 
Sistema Operacional de Tempo Real(vx works)
Sistema Operacional de Tempo Real(vx works)Sistema Operacional de Tempo Real(vx works)
Sistema Operacional de Tempo Real(vx works)
 
Desenvolvendo aplicações Web escaláveis
Desenvolvendo aplicações Web escaláveisDesenvolvendo aplicações Web escaláveis
Desenvolvendo aplicações Web escaláveis
 
Threads 09: Paralelismo
Threads 09: ParalelismoThreads 09: Paralelismo
Threads 09: Paralelismo
 

Mehr von Charles Fortes

Acesso a banco de dados com entity framework
Acesso a banco de dados com entity frameworkAcesso a banco de dados com entity framework
Acesso a banco de dados com entity frameworkCharles Fortes
 
Pitagoras - Introdução a Programação Orientada a Objetos - Revisão Final
Pitagoras - Introdução a Programação Orientada a Objetos - Revisão FinalPitagoras - Introdução a Programação Orientada a Objetos - Revisão Final
Pitagoras - Introdução a Programação Orientada a Objetos - Revisão FinalCharles Fortes
 
Pitagoras - Introdução a Programação Orientada a Objetos - Conceitos
Pitagoras - Introdução a Programação Orientada a Objetos - ConceitosPitagoras - Introdução a Programação Orientada a Objetos - Conceitos
Pitagoras - Introdução a Programação Orientada a Objetos - ConceitosCharles Fortes
 
Pitagoras - Introdução a Programação Orientada a Objetos - Encapsulamento, Ac...
Pitagoras - Introdução a Programação Orientada a Objetos - Encapsulamento, Ac...Pitagoras - Introdução a Programação Orientada a Objetos - Encapsulamento, Ac...
Pitagoras - Introdução a Programação Orientada a Objetos - Encapsulamento, Ac...Charles Fortes
 
Programação Genetica
Programação GeneticaProgramação Genetica
Programação GeneticaCharles Fortes
 
inteligência artificial - fuzzy - mineração
inteligência artificial - fuzzy - mineraçãointeligência artificial - fuzzy - mineração
inteligência artificial - fuzzy - mineraçãoCharles Fortes
 
PE2 - Funções e Structs
PE2 - Funções e StructsPE2 - Funções e Structs
PE2 - Funções e StructsCharles Fortes
 
Conceitos – Do Homem à Máquina
Conceitos – Do Homem à MáquinaConceitos – Do Homem à Máquina
Conceitos – Do Homem à MáquinaCharles Fortes
 
Programação Estruturada 2 - Revisão C
Programação Estruturada 2 - Revisão CProgramação Estruturada 2 - Revisão C
Programação Estruturada 2 - Revisão CCharles Fortes
 
LPC - aula 1 - Introdução .NET
LPC  - aula 1 - Introdução .NETLPC  - aula 1 - Introdução .NET
LPC - aula 1 - Introdução .NETCharles Fortes
 
Sistemas Operacionais - Aula 7 - Processos e Threads
Sistemas Operacionais - Aula 7 - Processos e ThreadsSistemas Operacionais - Aula 7 - Processos e Threads
Sistemas Operacionais - Aula 7 - Processos e ThreadsCharles Fortes
 
Economia global: França e Inglaterra
Economia global: França e InglaterraEconomia global: França e Inglaterra
Economia global: França e InglaterraCharles Fortes
 
Sistemas Operacionais - Aula 6 - Estrutura do Sistema Operacional
Sistemas Operacionais - Aula 6 - Estrutura do Sistema OperacionalSistemas Operacionais - Aula 6 - Estrutura do Sistema Operacional
Sistemas Operacionais - Aula 6 - Estrutura do Sistema OperacionalCharles Fortes
 
Sistemas Operacionais - Aula 4 - Revisão e Exercícios
Sistemas Operacionais - Aula 4 - Revisão e ExercíciosSistemas Operacionais - Aula 4 - Revisão e Exercícios
Sistemas Operacionais - Aula 4 - Revisão e ExercíciosCharles Fortes
 
Sistemas Operacionais - Aula 3 - Hardware e Software
Sistemas Operacionais - Aula 3 - Hardware e SoftwareSistemas Operacionais - Aula 3 - Hardware e Software
Sistemas Operacionais - Aula 3 - Hardware e SoftwareCharles Fortes
 
Sistemas Operacionais - Aula 2 - Visão Geral de Sistemas Operacionais
Sistemas Operacionais - Aula 2 - Visão Geral de Sistemas OperacionaisSistemas Operacionais - Aula 2 - Visão Geral de Sistemas Operacionais
Sistemas Operacionais - Aula 2 - Visão Geral de Sistemas OperacionaisCharles Fortes
 
Sistemas Operacionais - Aula 1 - História e Introdução a SO
Sistemas Operacionais - Aula 1 - História e Introdução a SOSistemas Operacionais - Aula 1 - História e Introdução a SO
Sistemas Operacionais - Aula 1 - História e Introdução a SOCharles Fortes
 
Apresentação prof e materia
Apresentação prof e materiaApresentação prof e materia
Apresentação prof e materiaCharles Fortes
 

Mehr von Charles Fortes (19)

Acesso a banco de dados com entity framework
Acesso a banco de dados com entity frameworkAcesso a banco de dados com entity framework
Acesso a banco de dados com entity framework
 
Pdm -final
Pdm  -finalPdm  -final
Pdm -final
 
Pitagoras - Introdução a Programação Orientada a Objetos - Revisão Final
Pitagoras - Introdução a Programação Orientada a Objetos - Revisão FinalPitagoras - Introdução a Programação Orientada a Objetos - Revisão Final
Pitagoras - Introdução a Programação Orientada a Objetos - Revisão Final
 
Pitagoras - Introdução a Programação Orientada a Objetos - Conceitos
Pitagoras - Introdução a Programação Orientada a Objetos - ConceitosPitagoras - Introdução a Programação Orientada a Objetos - Conceitos
Pitagoras - Introdução a Programação Orientada a Objetos - Conceitos
 
Pitagoras - Introdução a Programação Orientada a Objetos - Encapsulamento, Ac...
Pitagoras - Introdução a Programação Orientada a Objetos - Encapsulamento, Ac...Pitagoras - Introdução a Programação Orientada a Objetos - Encapsulamento, Ac...
Pitagoras - Introdução a Programação Orientada a Objetos - Encapsulamento, Ac...
 
Programação Genetica
Programação GeneticaProgramação Genetica
Programação Genetica
 
inteligência artificial - fuzzy - mineração
inteligência artificial - fuzzy - mineraçãointeligência artificial - fuzzy - mineração
inteligência artificial - fuzzy - mineração
 
PE2 - Funções e Structs
PE2 - Funções e StructsPE2 - Funções e Structs
PE2 - Funções e Structs
 
Conceitos – Do Homem à Máquina
Conceitos – Do Homem à MáquinaConceitos – Do Homem à Máquina
Conceitos – Do Homem à Máquina
 
Programação Estruturada 2 - Revisão C
Programação Estruturada 2 - Revisão CProgramação Estruturada 2 - Revisão C
Programação Estruturada 2 - Revisão C
 
LPC - aula 1 - Introdução .NET
LPC  - aula 1 - Introdução .NETLPC  - aula 1 - Introdução .NET
LPC - aula 1 - Introdução .NET
 
Sistemas Operacionais - Aula 7 - Processos e Threads
Sistemas Operacionais - Aula 7 - Processos e ThreadsSistemas Operacionais - Aula 7 - Processos e Threads
Sistemas Operacionais - Aula 7 - Processos e Threads
 
Economia global: França e Inglaterra
Economia global: França e InglaterraEconomia global: França e Inglaterra
Economia global: França e Inglaterra
 
Sistemas Operacionais - Aula 6 - Estrutura do Sistema Operacional
Sistemas Operacionais - Aula 6 - Estrutura do Sistema OperacionalSistemas Operacionais - Aula 6 - Estrutura do Sistema Operacional
Sistemas Operacionais - Aula 6 - Estrutura do Sistema Operacional
 
Sistemas Operacionais - Aula 4 - Revisão e Exercícios
Sistemas Operacionais - Aula 4 - Revisão e ExercíciosSistemas Operacionais - Aula 4 - Revisão e Exercícios
Sistemas Operacionais - Aula 4 - Revisão e Exercícios
 
Sistemas Operacionais - Aula 3 - Hardware e Software
Sistemas Operacionais - Aula 3 - Hardware e SoftwareSistemas Operacionais - Aula 3 - Hardware e Software
Sistemas Operacionais - Aula 3 - Hardware e Software
 
Sistemas Operacionais - Aula 2 - Visão Geral de Sistemas Operacionais
Sistemas Operacionais - Aula 2 - Visão Geral de Sistemas OperacionaisSistemas Operacionais - Aula 2 - Visão Geral de Sistemas Operacionais
Sistemas Operacionais - Aula 2 - Visão Geral de Sistemas Operacionais
 
Sistemas Operacionais - Aula 1 - História e Introdução a SO
Sistemas Operacionais - Aula 1 - História e Introdução a SOSistemas Operacionais - Aula 1 - História e Introdução a SO
Sistemas Operacionais - Aula 1 - História e Introdução a SO
 
Apresentação prof e materia
Apresentação prof e materiaApresentação prof e materia
Apresentação prof e materia
 

Threads - .Net Framework 4.0

  • 1. THE POWER OF THREADS Charles Fortes | Rogério Ohashi 17 de Maio de 2012 @CharlesFortes @ohashidotnet
  • 3. RÁPIDA E BÁSICA INTRODUÇÃO AO CONCEITO DE THREADS
  • 4. Basicamente é processo dividir a si mesmo em duas ou mais tarefas que podem ser executadas concorrentemente
  • 5. 2 2 1 1 1 1 3 Tempo
  • 6. O suporte a threads é fornecido pelo Sistema Operacional
  • 7. O sistema operacional enfilera os processos e os executa conforme sua prioridade
  • 8. O kernel controla a fila de processamento executando um pouco de cada processo, Quando o computador possui apenas um núcleo, ele alterna tão rapidamente que da a impressão de estar sendo executado ao mesmo tempo.
  • 9. Single Core 3 Sleeping 2 Sleeping 1 Running
  • 10. Single Core 1 Sleeping 3 Sleeping 2 Running
  • 11. Dual Core 3 Sleeping 1 2 Running Runing
  • 12. Dual Core 2 Sleeping 3 1 Running Runing
  • 13. Isto permite você navegar na Web enquanto ouve música
  • 14. Quando trabalhamos com paralelismo a nível de aplicativo, nós damos o nome de threads
  • 15. 2 2 1 1 1 1 3 Tempo
  • 16. Cada thread tem o mesmo contexto de software e compartilha o mesmo espaço de memória (endereçado a um mesmo processo-pai)
  • 17. Sendo assim o overhead causado pelo escalonamento de uma thread é muito menor do que o escalonamento de processos.
  • 18. "quando uma thread está à espera de determinado dispositivo de entrada/saída ou qualquer outro recurso do sistema, o processo como um todo não fica parado, pois quando uma thread entra no estado de 'bloqueio', uma outra thread aguarda na fila de prontos para executar."
  • 19. Uma thread pode assumir os seguintes estados: •Unstarted: logo após ser criada (antes do Start()); •Running: após ser ativada (Start()) ou após método Resume(); •Suspended: após método Suspended(); •Stopped: após método Abort().
  • 20. As principais principais beneficios que podemos tirar de um sistema que usa MultiThreads são.... processamento de dados paralelos para economia de tempo manter a aplicação "destravada" enquanto processa
  • 22.
  • 23. Task Parallel Library PLINQ Data Structures for Parallel Programming
  • 24. Data Structures for Parallel Programming A versão. NET Framework 4 introduz vários novos tipos que são úteis em programação paralela, incluindo um conjunto de classes para tratar coleções de classes concorrentes, e controles de sincronização, além de Lazy Load para classes.
  • 25. Data Structures for Parallel Programming Você pode usar esses tipos com qualquer código de aplicativo de vários segmentos, incluindo a biblioteca paralela de tarefas e PLINQ.
  • 26. Data Structures for Parallel Programming O namespace System.Collections.Concurrent fornece uma forma de adicionar e remover itens de uma lista sem se preocupar com a concorrencia de acesso a lista e sem a necessidade de se construir seu próprio controle de locks
  • 27. Data Structures for Parallel Programming Os mecanismos de LazyLoad para classes, permite que o .NET apenas aloque o objeto na memória no momento em que for necessário sua utilização, o que pode melhorar o desempenho significativamente
  • 28. Task Parallel Library É um conjunto de APIs e Typos disponiveis nos namespaces System.Threading e System.Threading.Tasks Seu objetivo é facilitar e agilizar o processo de desenvolvimento de funções paralelas
  • 29. Task Parallel Library Com ela conseguimos controlar a execução das tarefas paralelas, Agendar a execução das tarefas pelo ThreadPool, funções de cancelamento, gerenciamento de estados e outros Seu objetivo é facilitar e agilizar o processo de desenvolvimento de funções paralelas
  • 30. Task Parallel Library Apenas deve-se tomar cuidado pois o custo de criar e gerir threads, para operações de loop por exemplo, onde o trabalho é muito pequeno, pode ser muito mais lento do que usar o for em sí.
  • 31. Task Parallel Library Criar o paralelismo de Tarefas é muito fácil. Você pode optar por disparar vários métodos em paralelo com o Parallel.Invoke, ou criar uma task explicitamente.
  • 32. Task Parallel Library Parallel.Invoke(() => DoSomeWork(), () => DoSomeOtherWork()); // Create a task and supply a user delegate by using a lambda expression. var taskA = new Task(() => Console.WriteLine("Hello from taskA.")); // Start the task. taskA.Start(); // Output a message from the joining thread. Console.WriteLine("Hello from the calling thread."); /* Output: * Hello from the joining thread. * Hello from taskA. */
  • 33. Task Parallel Library Da mesma forma, manipular loops fica muito fácil
  • 34. Task Parallel Library // Sequential version foreach (var item in sourceCollection) { Process(item); } // Parallel equivalent Parallel.ForEach(sourceCollection, item => Process(item));
  • 35. PLINQ O PLINQ é uma extensão do LINQ introduzido no .NET 3.0, fornecendo métodos de paralelismo para iteração com coleções
  • 36. PLINQ var nums = Enumerable.Range(10, 10000); var query = from num in nums.AsParallel() where num % 10 == 0 select num;
  • 37. DEMOS

Hinweis der Redaktion

  1. Microsoft Excelência em Engenharia Confidencial da Microsoft
  2. Microsoft Excelência em Engenharia Confidencial da Microsoft
  3. Microsoft Excelência em Engenharia Confidencial da Microsoft
  4. Microsoft Excelência em Engenharia Confidencial da Microsoft
  5. Microsoft Excelência em Engenharia Confidencial da Microsoft