A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Variáveis condicionais e Semáforos Aula de Concorrência.

Apresentações semelhantes


Apresentação em tema: "Variáveis condicionais e Semáforos Aula de Concorrência."— Transcrição da apresentação:

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


Carregar ppt "Variáveis condicionais e Semáforos Aula de Concorrência."

Apresentações semelhantes


Anúncios Google