Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouEmanuel De Almeida Alterado mais de 9 anos atrás
1
Variáveis condicionais e Semáforos Aula de Concorrência
2
Variáveis condicionais
Concorrência em C ~if113/C Variáveis condicionais ~if113/C/Praticas/exemplo1.c Semáforos ~if113/C/Praticas/cook.c Aula de Concorrência
3
Portabilidade X Re-codificar
conj. de padrões de interfaces do S.O. UNIX (fabricante neutro) POSIX Portable Operating System Interface Institue of Electrical and Eletronic Engineers (IEEE) POSIX.1 -> Linguagem C POSIX.2 -> shell e utilitários POSIX.4 -> thread Motivação
4
SO Desenho Task 1 (Programa 1) Motivação Task N (Programa N) thread11
. Task N (Programa N) thread11 thread11 thread11 thread N1
5
Introdução prefixo "pthread" e "sem" Criação Saída Cancelamento Sinal
phthread_create() phthread_attr_init() Saída phthread_exit() phthread_join() Cancelamento phthread_cancel() Sinal phthread_kill() POSIX.4
6
Sincronização Mutex Semáforo Variável de condição pthread_mutex_init()
pthread_mutexattr_init() pthread_mutex_lock() pthread_mutex_unlock() Semáforo sem_init() sem_open() Variável de condição pthread_cond_init() pthread_cond_cond() POSIX.4
7
Introdução e Criação attr = objeto com os atributos
deve se setado antes da criação possui valores padrões mutexes e variáveis de condição compartilhamento de dados globais herda a máscara de sinal e a prioridade de execução do thread que o chamou #include <pthread.h> int pthread_create(pthread_t *new_thread_ID, const pthread_attr_t *attr, void * (*start_func)(void *), void *arg); POSIX.4 -> Thread
8
Implementação #include <pthread.h> pthread_t tid;
void *start_func(void *), *arg; pthread_create(&tid, NULL, start_func, arg); pthread_attr_t attr; pthread_attr_init(&attr); /* initialize attr with default attributes */ pthread_create(&tid, &attr, start_func, arg); POSIX.4 -> Thread
9
Desafios Problema: main() pode acabar antes do final da thread
Solução: pthread_join() especifica o thread final para a main() poder terminar POSIX.4 -> Thread
10
Introdução e Criação Previne que múltiplos threads executem regiões críticas simultaneamente São globais Intra-processos X Inter-processos Atributos: pthread_mutexattr_init() Passos: inicializar e destrancar pthread_mutex_init() pthread_mutex_lock() pthread_mutex_unlock() #include <pthread.h> int pthread_mutex_init(pthread_mutex_t *mp, const pthread_mutexattr_t *attr); POSIX.4 -> Mutex
11
Implementação #include <pthread.h> pthread_mutex_t mp;
pthread_mutexattr_t mattr; pthread_mutex_init(&mp, NULL); /*OU pthread_mutexattr_init(&mattr); pthread_mutex_init(&mp, &mattr); */ POSIX.4 -> Mutex
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.