Threads - .Net Framework 4.0

529 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

  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

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?

×