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
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.
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
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.
*/