Please enable JavaScript.
Coggle requires JavaScript to display documents.
Threads (pthreads (Definido para linguagem C, pthreads.h), Memória (Stack…
Threads
pthreads
Definido para linguagem C
pthreads.h
Memória
Stack
Alocado no início da thread
Empilha dados durante a execução do bloco de código
LIFO
Acesso de forma direta
Cada thread tem sua própria stack
Alocamento "estático"
Ocorre stack overflow quando tenta alocar e não há espaço
Heap
Alocamento dinâmico
Alocado e desalocado manualmente
Custo de processamento alto
Acesso por ponteiros
Pode alocar espaço para objetos bem grandes
2 tipos
Join
Tipo padrão
Outra função espera o valor de retorno ao final da execução
Detached
Não retorna valores
Quando é finalizada libera todos os recursos vinculados a ela
Suspender
sleep
Suspende a thread por um tempo em segundos
usleep
Suspende a thread por um tempo em milissegundos
Sincronização
Região crítica: área compartilhada entre as threads
Condição de corrida
2 ou mais processos tentam acessar a mesma área de memória e o resultado é inesperado
Problema produtor - consumidor
Problema da condição de corrida
Solução
Semáforos
Evita 2 situações
Deadlock
Ocorre um impasse e 2 threads ficam bloqueadas esperando uma pela outra
Starvation
Um processo nunca é executado porque sem tem algum de prioridade maior que ele
Problema dos filósofos glutões
Controle de acesso a recursos compartilhados
Monitores
Orientado a objetos
Contém um conjunto de funções que manipula um recurso compartilhado
Nível mais alto que semáforos
Usa mecanismos de exclusão mútua
Variáveis condicionais
Complementar ao mutex para sincronizar threads
Testar o valor das variáveis condicionais
Signal e Wait
Mutex
Exclusão mútua
Evita que mais de um processo ou thread acesse a mesma área de memória ao mesmo tempo
2 estados
Bloqueado
Desbloqueado