Please enable JavaScript.
Coggle requires JavaScript to display documents.
Threads - Coggle Diagram
Threads
Thread
-
Individual
- ID de thread
- Contador de programa
- Conjunto de registradores
- Pilha
Compartilhado
- Seção de código
- Seção de dados
- Outros recursos do SO
- Processo tradicional - uma Thread
- Threads - Miniprocessos
Motivação
As aplicações modernas utilizam um Processo separado, e várias threads de controle
Benefícios
- Responsividade
- Compartilhamento de recursos
- Economia
- Utilização de arquiteturas multiprocessados
Programação Muilticore
Paralelismo
-
- Paralelismo de dados - Distribui subconjunto de dados aos núcleos e executa a mesma operação
- Paralelismo de atividades - Distribui tarefas a diversos núcleos. São tarefas diferentes, podendo ou não usar os mesmos dados
Concorrência
Suportar mais de uma tarefa, é possível mesmo sem paralelismo
Desafios
- Identificação de tarefas e divisão de atividades
- Equilíbrio
- Divisão de Dados
- Dependência de dados
- Teste e Depuração
Biblioteca de Threads
-
Criação de Threads
- Assíncrona - assim que o pai cria uma thread-filho, o pai retoma sua execução para que ele e seu filho sejam executados concorrentemente.
- Síncrona - o thread-pai cria um ou mais filhos e, então, deve esperar que todos os seus filhos terminem para ele voltar a ser executado (fork-join).
-
Cancelamento de Threads
- Assíncrono - termina o thread de destino
imediatamente.
- Adiado - permite que o thread de destino
verifique periodicamente se ele deve ser cancelado
Manipulação de Sinais
Sinais são usados em sistemas UNIX para notificar um processo de que ocorreu um evento em particular
- POSIX Pthreads - É uma especificação, com implementações disponíveis para Linux, Mac OS X, Windows, etc.
- Windows Threads - Disponível em C
- Java Threads - API do Java com um conjunto de aspectos de criação e gerenciamento de threads.
Geração Multithread
-
-
Modelos
- Muitos para Um (N:1) - Muitos threads em nível de usuário mapeados para único thread do kernel.
- Um para Um (1:1) - Cada thread em nível de usuário é mapeado para thread do kernel.
- Muitos para Muitos (N:M) - Permite que muitos threads em nível de usuário sejam mapeados para muitos
threads do kernel.