Programação Paralela
Paralelismo por Software
• É um programa com capacidade de dividir
tarefas em pequenas partes e executá-las em
paralelo.
– Threads
– Processos Filhos (folk)
Threads
• Com os processadores de alto desempenho,
veio a oportunidade de poder executar vários
fluxos de execução de um mesmo processo.
• Thread é um fluxo de execução dentro de um
processo.
• Um Processo consistem em um ambiente de
execução, contendo uma ou mais threads.
Threads
• Múltiplas threads executam
concorrentemente em um processo, mesma
idéia a múltiplos processos executando
concorrentemente em um único processador.
• Threads pertencentes a um mesmo processo,
compartilham os mesmos recursos e memória
do processo.
Suporte a Threads
• O sistema operacional oferece suporte as
threads em nível de kernel, KLT (Kernel-Level
Thread).
• Threads podem ser implementadas através de
bibliotecas especificas em determinadas
linguagens ULT (User-Level Thread).
KLT (Kernel-Level Thread)
ULT (User-Level Thread).
Processos no Windows
• ALT + SHIFT + ESC
Threads em C
• Linux, Solaris (Unix)
– Pthread.h
• Windows
– Process.h
– Windows.h
Windows.h
• MessageBox – Gera uma caixa de mensagem no
programa.
• CreateThread – Utilizada para criar uma thread.
• SuspendThread – Pausa a execução de uma thread.
• ResumeThread – Reinicia a execução de uma thread
pausada.
• TerminateThread – Termina uma thread.
• WaitForSingleObject – Espera a execução de um
objeto.
• CloseHandle – Finaliza o identificador para a thread
TIPOS DOS DADOS
• DWORD - Ponteiro para um objeto.
• WINAPI - Ponteiro para um argumento da api
windows.
• HANDLE - Identificador para um objeto.
• LPVOID - Equivalente a void*
MessageBox(HWND,LPCTSTR,LPCTSTR,UINT)
•
•
•
•
HWND – Proprietário da janela.
LPCTSTR – Mensagem na janela.
LPCTSTR – Titulo da janela.
UINT – Comportamento da janela.
MessageBox(0,“Conteúdo",“Título",0);
Int msg1 = MessageBox(NULL,“Opção ?",”Titulo",MB_YESNO +
MB_ICONQUESTION);
CreateThread(ThreadAtt,StackSize,Addr_Funcao,argumento,flags,ThreadId);
• ThreadAtt – Ponteiro para estruturas de Threads, 0
para atributos padrões.
• StackSize – Tamanho de inicialização da pilha, 0
tamanho padrão.
• Addr_Funcao – Função de execução da thread.
• Argumento – Argumento opcional para a função.
• Flags – Comportamento da Thread após ser criada, 0 a
thread é executada.
• ThreadId – Ponteiro do tipo DWORD referente a
identificação da Thread.
• Retorna um HANDLE para a thread.
SuspendThread(HANDLE )
• HANDLE – Thread que deverá ser suspensa.
• Retorna 0 se a thread foi interrompida e -1
caso não foi possível interromper a thread.
ResumeThread(HANDLE)
• HANDLE – Thread que deverá ser reiniciada.
• Retorna 0 se a thread foi reiniciada e -1 caso
não foi possível reiniciar a thread.
TerminateThread(HANDLE,DWORD)
• HANDLE – Thread que devera ser finalizada.
• DWORD – Código de saída, 0 sucesso e 1 erro.
• Retorna 0 para thread finalizada e qualquer
valor diferente de 0 se a thread não for
finalizada.
WaitForSingleObject(HANDLE,DWORD)
• HANDLE – Thread que devera ser monitorado
sua execução.
• DWORD – Tempo em milissegundos que o
programa devera aguardar.
– INFINITE , tempo indeterminado.
CloseHandle(HANDLE )
• HANDLE – Handle que devera ser finalizada.
Download

Programação Paralela