Please enable JavaScript.
Coggle requires JavaScript to display documents.
Threads - Coggle Diagram
Threads
Bibliotecas de Threads
Criação de Threads Assíncrona
Pai cria thread-filho
Execução de Threads independentes
Pouco compartilhamento de dados
Criação de Threads síncrona
Execução concorrente
Compartilhamento de dados elevado
POSIX Pthreads
Windows Threads (Windows API)
Java Threads
Criação de thread através de API nativas do SO
Programação Multicore
executa mais de uma tarefa simultaneamente (Paralelismo)
Permite o suporte a mais de uma tarefa (Concorrência)
Desafios
Programas devem suportar a programação multicore
Programar as diversas threads eficientemente
Identificação de tarefas e divisão das atividades
Equilíbrio E Divisão dos dados
Dependência de dados
Teste e depuração (debug)
Tipos de Paralelismo
Paralelismo de Dados (Data Parallelism)
Paralelismo de Dados (Data Parallelism)
Questões Relacionadas com a Criação de Threads
Banco de Threads (Pool de Threads)
Requisição para acordar a thread do banco
Vantagens
é rápido
Utiliza threads já existentes
Criam uma série de threads onde esperam trabalho
Cancelamento de Threads
Cancelamento assíncrono
termina o thread de destino
imediatamente.
Problemático
Recursos podem não ser liberados de volta ao SO
Cancelamento adiado
Permite a thread decidir se deve ser cancelada ou não
Manipulação de Sinais
Usado em sistema UNIX
notificar um processo que ocorreu um evento em particular
Manipulador de Sinal
Processar sinais
Sinal é entregue a um processo
Sinal é gerado por evento em particular
Sinal é tratado
Opções
Entregar o sinal ao thread ao qual o sinal se aplica
Entregar o sinal a cada thread no processo
Entregar o sinal a certos threads no processo
Atribuir uma área específica para receber todos os sinais para o
processo
Ativações do escalonador
Ativações do escalonador oferece upcalls
mecanismo de
comunicação do kernel
permite que uma aplicação mantenha o número
correto de threads do kernel
implementado usando Processo Leve (LWP)
Cada LWP é como um processador virtual
Cada LWP é ligado a uma thread de kernel
SO escalona threads de kernel
Modelos de Geração de
Multithreads
Threads do usuário
Biblioteca gerencia a thread
Threads do kernel
Threads admitidos diretamente
pelo kernel
Modelos de Relação
Um para Um (1:1)
Maior concorrência e uso de MP
É custoso
cria muitas threads de
kernel
Usado pelo Linux e Windows
Muitos para Muitos (M:N)
SO cria thread do Kernel
Muitos threads usuário para muitos thread do Kernel
Muitos para Um (N:1)
Muitas threads para único thread do kernel
Modelo eficiente
Imprópria para sistemas
multiprocessadores
Visão Geral
Benefícios
Responsividade
Executa o programa mesmo se ele estiver bloqueado
Compartilhamento de recursos
Threads compartilham memória e recursos do
processo pai.
Economia
Alocações de memórias
recursos exigida pelos processos
Cria, gerencia e troca o contexto das threads
Utilização de arquiteturas multiprocessadas
Uso de múltiplas CPUs ao mesmo tempo
(paralelamente)
Processos de uma única thread não se beneficiam
de MP