Multithreading Parte 1
- parte 1 - Tecnologia em Análise e
Desenvolvimento de Sistemas Profa.: Daniela Costa Terra
Email: daniela.terra@ifmg.edu.br
1
Multithreading
É normal que os computadores pessoais sejam capazes de compilar um programa, enviar um arquivo para a impressora, receber mensagens de correio eletrônico, enfim, realizar várias tarefas ao
mesmo tempo, ou de maneira concorrente.
Mesmo os computadores de mais de um núcleo de processamento estão, normalmente, executando mais processos que a quantidade de núcleos disponíveis.
A impressão de paralelismo ocorre devido o sistema operacional
conceder a cada processo a chance de executar suas instruções por um determinado espaço de tempo.
2
Multithreading
Por outro lado, estamos acostumados a pensar em um processo com uma única thread (termo abreviado de “thread of control”, ou linha de controle, em português) de execução.
Algumas linguagens de programação, em especial a linguagem
Java, possibilitam ao programador criar processos (ou programas) com várias
threads,
isto
é,
várias
linhas
de
execução
independentes.
Em programas com várias threads (programas multithreaded) cada
thread de execução designa uma tarefa do programa que pode executar paralelamente a outras tarefas.
3
Multithreading
um processo com uma thread
um processo com três threads
A sincronização de threads pode ser uma tarefa de programação extremamente complexa e difícil de “debugar”
O planejamento da execução concorrente das várias threads de um programa deve ser exaustivamente testado
4
Multithreading
Programação multiprocesso x programação multithreading:
A mudança de contexto entre threads é mais rápida e consome menos recursos de sistema
As threads de um mesmo processo compartilham a mesma área de dados
A comunicação inter-thread é mais eficiente e mais simples
5
Multithreading
Considerações a favor do paralelismo de tarefas em um
programa:
Programas multithreaded podem