Threads - .Net Framework 4.0

524 visualizações

Publicada em

Apresentação utilizada no InfoTech2012 - Demonstra como funcionam as threads e como utilizar os recursos do .NET 4.0 para tirar o melhor proveito deste recurso e criar aplicativos mais rápidos com melhor experiência de usuário

0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
524
No SlideShare
0
A partir de incorporações
0
Número de incorporações
2
Ações
Compartilhamentos
0
Downloads
5
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide
  • Microsoft Excelência em Engenharia Confidencial da Microsoft
  • Microsoft Excelência em Engenharia Confidencial da Microsoft
  • Microsoft Excelência em Engenharia Confidencial da Microsoft
  • Microsoft Excelência em Engenharia Confidencial da Microsoft
  • Microsoft Excelência em Engenharia Confidencial da Microsoft
  • Threads - .Net Framework 4.0

    1. 1. THE POWER OF THREADSCharles Fortes | Rogério Ohashi 17 de Maio de 2012 @CharlesFortes @ohashidotnet
    2. 2. Avaliação da Palestrahttp://tinyurl.com/infotechdia17@CharlesFortes
    3. 3. RÁPIDA E BÁSICA INTRODUÇÃOAO CONCEITO DE THREADS
    4. 4. Basicamente é processo dividir a simesmo em duas ou mais tarefas quepodem ser executadas concorrentemente
    5. 5. 2 21 1 1 1 3 Tempo
    6. 6. O suporte a threads é fornecidopelo Sistema Operacional
    7. 7. O sistema operacional enfilera os processos e os executa conforme sua prioridade
    8. 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 aimpressão de estar sendo executado ao mesmo tempo.
    9. 9. Single Core3 Sleeping2 Sleeping1 Running
    10. 10. Single Core1 Sleeping3 Sleeping2 Running
    11. 11. Dual Core3 Sleeping1 2 Running Runing
    12. 12. Dual Core2 Sleeping3 1 Running Runing
    13. 13. Isto permite você navegar naWeb enquanto ouve música
    14. 14. Quando trabalhamos comparalelismo a nível de aplicativo, nós damos o nome de threads
    15. 15. 2 21 1 1 1 3 Tempo
    16. 16. Cada thread tem o mesmo contexto de softwaree compartilha o mesmo espaço de memória(endereçado a um mesmo processo-pai)
    17. 17. Sendo assim o overhead causado peloescalonamento de uma thread é muito menor do que o escalonamento de processos.
    18. 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 umathread entra no estado de bloqueio, uma outra thread aguarda na fila de prontos para executar."
    19. 19. Uma thread pode assumir os seguintes estados:•Unstarted: logo após ser criada (antes doStart());•Running: após ser ativada (Start()) ou apósmétodo Resume();•Suspended: após método Suspended();•Stopped: após método Abort().
    20. 20. As principais principais beneficios que podemos tirarde um sistema que usa MultiThreads são....processamento de dados paralelos para economia detempomanter a aplicação "destravada"enquanto processa
    21. 21. Programando paralelismo no .NET
    22. 22. Task Parallel Library PLINQData Structures for ParallelProgramming
    23. 23. Data Structures for ParallelProgrammingA versão. NET Framework 4 introduz vários novos tiposque são úteis em programação paralela, incluindo umconjunto de classes para tratar coleções de classesconcorrentes, e controles de sincronização, além deLazy Load para classes.
    24. 24. Data Structures for ParallelProgrammingVocê pode usar esses tipos com qualquer código de aplicativo de vários segmentos, incluindoa biblioteca paralela de tarefas e PLINQ.
    25. 25. Data Structures for ParallelProgramming 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
    26. 26. Data Structures for ParallelProgramming 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
    27. 27. 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
    28. 28. 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
    29. 29. 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í.
    30. 30. 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.
    31. 31. Task Parallel LibraryParallel.Invoke(() => DoSomeWork(), () => DoSomeOtherWork());// Create a task and supply a user delegate by using a lambda expression. var taskA = new Task(() => Console.WriteLine("Hello fromtaskA.")); // 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. */
    32. 32. Task Parallel Library Da mesma forma, manipular loops fica muito fácil
    33. 33. Task Parallel Library// Sequential versionforeach (var item in sourceCollection){ Process(item);}// Parallel equivalentParallel.ForEach(sourceCollection, item =>Process(item));
    34. 34. PLINQO PLINQ é uma extensão do LINQ introduzidono .NET 3.0, fornecendo métodos de paralelismopara iteração com coleções
    35. 35. PLINQvar nums = Enumerable.Range(10, 10000);var query = from num in nums.AsParallel() where num % 10 == 0 select num;
    36. 36. DEMOS
    37. 37. PERGUNTAS?

    ×