08.02.2015 Views

Programação Funcional e Concorrente com Scheme

Programação Funcional e Concorrente com Scheme

Programação Funcional e Concorrente com Scheme

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

notas de aula -<br />

Jerônimo C. Pellegrini<br />

A thread que chama esta função retorna o controle para o escalonador, <strong>com</strong>o se seu tempo<br />

se houvesse esgotado. Retorna zero em caso de sucesso ou −1 em caso de erro.<br />

int pthread_join ( pthread_t thread_id , void ** status );<br />

Bloqueia a thread chamadora até que thread_id termine. Se status for diferente de NULL,<br />

o valor de retorno da thread sendo aguardada será copiado no local onde *status aponta.<br />

Se a thread aguardada for cancelada, PTHREAD_CANCELED é copiado onde *status aponta.<br />

O valor de retorno de pthread_join é zero em caso de sucesso ou um código de erro em<br />

caso de falha. Os possíveis erros são:<br />

EDEADLK: um deadlock foi detectado.<br />

EINVAL: não é possível realizar join nesta thread.<br />

ESRCH: a thread thread_id não foi encontrada.<br />

c.2 sincronização<br />

c.2.1 Mutexes<br />

Mutexes podem ser criados da seguinte forma:<br />

pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER ;<br />

int pthread_mutex_init ( pthread_mutex_t * mutex ,<br />

const pthread_mutexattr_t * mutexattr );<br />

Inicializa um mutex. mutexattr determina os atributos do mutex, e pode ser NULL quando<br />

se quer os atributos default. O valor de retorno sempre é zero.<br />

Versão Preliminar<br />

Para travar e liberar mutexes há as funções pthread_mutex_lock e pthread_mutex_unlock.<br />

pthread_mutex_lock ( pthread_mutex_t * mutex );<br />

pthread_mutex_trylock ( pthread_mutex_t * mutex );<br />

pthread_mutex_unlock ( pthread_mutex_t * mutex );<br />

Mutexes são desalocados <strong>com</strong> pthread_mutex_destroy<br />

pthread_mutex_destroy ( pthread_mutex_t * mutex );<br />

c.2.2<br />

Semáforos<br />

336<br />

[ 27 de outubro de 2010 at 15:47 ]

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!