Please enable JavaScript.
Coggle requires JavaScript to display documents.
Threads - Coggle Diagram
Threads
Programação Multicore
CPUs moderna
Múltiplos cores (núcleos)
Programação multithread
Bom uso de CPUs multicore
Paralelismo real
Executa mais de uma tarefa simultaneamente
Diferente de concorrência
Sistema é concorrente quando dá suporte a mais de
uma tarefa
CPU alterna entre processos (rápido)
Cria ilusão de funcionamento simultâneo
Existe concorrência sem paralelismo
Existe concorrência com paralelismo
Comum
Desafios
CPUs + SO multicore = insuficiente
Programas também precisam ser adaptados
É preciso pensar em...
Identificação de tarefas e divisão das atividades
Divisão do código em tarefas concorrentes e separadas, pensando na independência na execução
Equilíbrio
Distribuir o esforço computacional de forma equilibrada entre as tarefas
Divisão de dados
Dados são divididos para cada núcleo
Dependência de dados
Dados são examinados e então sincroniza tarefas quando uma depende do resultado da outra
Teste e depuração (debug)
Lidar com múltiplos caminhos de execução paralelos
Tipos de Paralelismo
Paralelismo de Dados (Data Parallelism)
Distribui partes do mesmo dado por vários núcleos, aplicando a mesma operação em todas elas
Paralelismo de Tarefas (Task Parallelism)
Distribui tarefas diferentes por múltiplos núcleos, podendo operar sobre os mesmos dados ou outros dados
Visão geral
"Unidade básica de utilização de CPU"
Compartilhada
Seção de código
Seção de dados e recursos do SO
Permite...
Compartilhamento de recursos
Pai e filho compartilham recursos
Responsividade
Programa continua rodando msm que parte dele fora bloqueado
Economia
Evita alocação de memória tradicional de processo
Lidar com elas é mais econômico
Utilização de arquiteturas multiprocessadas
Utiliza várias CPUs (paralelamente)
Processos de uma única thread não se beneficiam de MP
Individual
Contador de programa
Conjunto de registradores
Pilha
ID de thread
Processo tradicional = Uma thread
Em sistemas modernos..
Um processo pode conter múltiplos threads de controle
Ex em aplicações: processo separado + múltiplas threads
Navegador web
Threads p/ cada aba, imagens, etc.
Processador de texto
Threads p/ gráficos, entradas de dados do usuário, etc.
“Miniprocessos”
Modelos de Geração de
Multithreads
Bibliotecas de Threads