Created by Thiago Russo
over 8 years ago
|
||
Question | Answer |
Threads (Introdução) Qual problema Thread resolve? | Imagine uma CPU única (1 operação por vez) executando um job pesado. Outras tarefas ficariam esperando e a máquina "congelada", sem resposta. Thread resolve isso. |
O que são Threads? | São "segmentos de processamento" que servem para as aplicações tirarem o máximo de proveito de sistemas multicore (vários processadores/núcleos). Servem para implementar paralelismo. |
Como as Threads funcionam ? Como elas implementam o paralelismo no SO? | Cada aplicação é executada em seu próprio processo (em sua própria Thread), que por sua vez isola uma aplicação da outra. Thread,é como uma CPU virtualizada, com sua própria memória virtual., garantindo que uma app não influencia na outra.. Se uma aplicação falha, um único processo é afetado. Cada Thread é executada em uma fatia de tempo, melhorando a capacidade de resposta e dando a "ilusão de paralelismo" |
Como o Windows gerencia overhead (sobrecarga) ? Overhead x escalabilidade | Cada Thread é executada em uma fatia de tempo. Qdo o tempo acaba, a Thread é pausada e o SO executa outra Thread. Isso é a mudança de contexto. A Thread corrente está utilizando uma área de memória e registros da CPU. O SO tem que salvar seu estado e retomá-lo depois. Isso tem um custo computacional, gerando um overhead. Devido a isso, vc deve analisar com cautela, se realmente precisa de multithread para escalabilidde e agilidade. |
Exemplo básico de criação de Thread | |
Thread Class: Qual namespace? O que é o recurso de Synchronization? | Namespace: System.Treading Assembly: mscorlib (in mscorlib.dll) Synchronization: recurso que garante que 2 Threads não executem uma parte específica da app ao mesmo tempo. Ex: ñ deixa 2 Threads escreverem na tela ao msm tempo. |
Thread Class: .Start() ? .Start(20) ? | |
Thread.Sleep() | .Sleep() => Suspende a Thread atual para o número especificado de milissegundos. Sleep(0) => sinaliza para o SO que a Thread finalizou, ao invés de esperar toda a sua fatia de tempo, liberando o processador para outra Thread. |
Thread Class: Foreground x Background | |
Stoping a Thread | |
Thread StaticAttribute | |
ThreadLocal<T> | |
ThreadPool O que é, como funciona e um exemplo simples? | |
ThreadPool Vantagens e Desvantagens | Vantagens => evita o custo de criar novas Threads e existem casos que é necessário limitar a quant de Threads para não derrubar o servidor Desvantagens => Diminui o paralelismo que conseguimos ao utilizar diretamente a classe Thread, pois limita a qtde de Threads. O pool de Threads gerencia automaticamente a qtde de Threads que precisa manter. |
Thread.Join() |
Want to create your own Flashcards for free with GoConqr? Learn more.