Threading(System. Threading)
Autor: Manual de fotografia | Publicado: 2010-09-23T09:56:00-07:00

Definição:      Fazer uma coisa enquanto espara a outra ficar pronta
Threads simples
Propriedades
isAlive:Verifica        a execução da thread
isBackground:Verifica        ou atribui a thread para background
isThreadPollThread:        Verifica se a thread faz parte de um pool de threads
managedThreadId:        Recupera o numero q identifica a query
name:        Recupera ou associa um nome a thread
priority:        Recupera ou associa uma priorida a thread
threadState:        Recupera o estado da thread
Metodos
abort:        Dispara uma excecao para interromper a execução da thread
interrupt:        Dispara uma exceção quando a thread está bloqueada.        (threadState.WaitJoinSleep)
join:        Bloqueia a chamada da Thread até q ela termine
Resume:Não        utilizar
Start:        Agenda a execução de uma thread
Suspend:        Não Utilizar
Propriedades       (Statics)
currentContext:        Recupera o threadContext relacionado a thread
currentthread:        Recupera a thread atual.
Métodos       (Statics)
beginCriticalRegion:        Regiao delimitada nao pode ser abortada serguramente.
endCriticalRegion:        Indica o final de uma região critica
getDomain:        Recupera o appDomain da thread
getDomanId:        Recupera um identificador único para aquela appDomain
resetAbort:        Cancela uma chamada do abort 
sleep:        Bloqueia uma thread por um certo número de iterações
volatileRead:        Le a última versão do valor de um campo indiferente do processador que o        escreveu
votatileWrite:        Escreve o valor do campo imediatamente 
threadStateEnumeration
aborted:        Parou
abortRequest:        Pediu pra parar, mas ainda nao parou
background:        Esta rodando em background
running:        começou
stopped:        parou
stoppedRequest:        pediu pra parar
suspended:        Suspenso. Suporta voltar ou continuar
suspendedRequest:        Pediu pra suspender. Suporta voltar ou continuar
Unstarted:        Criou mas ainda não usou
waitSleepJoin:        Bloqueada a pedido de algum método
Criação       de Thread Simples
Função        que o Thread vai executar
Objeto        do tipo ThradStart, como        parâmetro vai a função
Objeto        do tipo thread, como        parâmetro vai o threadStart
Thread       Múltiplos
Do        mesmo modo que as simples
threadJoin       
Após        iniciado o join faz com que elas aguardem a execução das outras pra        proceguir
Prioridade       da threads
Nesta        Ordem
Highest
Above         normal
Normal
Below         Normal
Lowets
Passando       dados para uma thread
Utiliza-se        o ParametrizedStartThread no lugar do startThread que é igual ao outro        só que o método que será executado, recebe parâmetros que são passados        no método Start.
Parando       as Threads
Utiliza-se        o thread.Abort. Atenção para o local onde a thread&nbsp; nome para as inconsistências. Estes        locais são chamados regiões criticas.
Compartilhando       informações
No        momento e que as threads estão rodando dependendo do processador alguns        valores resultandes das threads podem passar em branco. Para isso faremos uso do Interlocked. Observar que        esta classe comente é usada em operações aritimeticas
Interlocked
add:         faz a adição de dois números
exchange:Troca         dois valores de uma operação
increment:         adiciona 1 ao valor da operação atômica
read:         Le um valor de uma operação atômica
SincronizationLocks
Sincroniza         o acesso a objetos, para não haver mistura nos dados
enter:         Cria uma transação de segurança para um objeto especifico
exit:         Libera a trava
tryEnter:         tenta criar mas tem u tempo de timeout
wait
DeadLocks
É         o caso em que dois pedaços de código tantam acessar o mesmo objeto se         anulando
Outros        métodos de sincronização
readerWriterLock:         Trava para a escrita e não para a leitura
mutex:         Sincronizacao através do appDomain
semaphore:         barra o acesso a recurso e cria algumas threads
event:         Notifica ás threads que um evento ocorreu
Programação       Assíncrona
Significa        autorizar partes do código a rodar em threads diferentes
Todos        os métodos que utilizam os modelo BeginXXX, EndXX, funcionam como threads        assíncronas
Modelos        de utilização
Wait-Until-Done:         Inicia o método assincrono e vai fazer outra coisa. Esta outra coisa         fica bloqueada ateh o q estiver fazendo tiver terminado.
Poolling:         Igual ao anterior porem existe um código que testa se a outra atividade         já terminou
CallBack:         Nesse caso um método e especificado para ser executado quando o método         parar de executar
Execoes         e APM
As          exceções somente são executas depos de todo o trecho BeginXXX EndXXX          terem sido executados
Usando         o pool de Threads
São          threads já prontas e recomendadas pelo framework
Métodos
getAvaiableThreads:Numero           de threads disposnivel para serem utilizadas no pool
getMaxThreads:Numero           Maximo de threads suportados pelo pool
getMinThreads:           Numero mínimo de threads criados a qquer momento
queueUserWorkItem:           Adiciona u trabalho ao pool para ser executado a qquer momento
registerWaitForSingleObject:           Permite que o callback possa ser associado a um WaitHandle, quando           este handle está sinalaizado
setMaxThread:           Associa o numero maximo de thread desse pool
setMixThread:           Associa o numero mínimo de thread desse pool
unsafeQueueNativeOverlapped:&nbsp; Trabalha com IO de arquivos
unsafeQueueUserWorkItem:           Enfilera um trabalho para threads de alta performance. Não propaga           essa execução para uma thread seguinte
unsafeRegisterWaitForSingleObject:           Usado para associar um CallBack a um Processo WaitHandle.
Motivos          para se altarar o numero de Thread no pool
Quando           o numero de trabalhos no pool é muito grande
Aumentando-se           o numero mínimo inicial de threads aumenta-se a perfomance.
SychronizationContext         
Serve          pra ser utilizado em diferentes ambientes