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 - Jerônimo C. Pellegrini<br />

Quando pthread_cond_wait for chamado, o mutex passado <strong>com</strong>o segundo argumento<br />

já deve estar travado. O mutex será destravado e a thread será bloqueada (tudo<br />

atomicamente). Quando outra thread sinalizar a variável, a thread voltará a executar e o<br />

mutex será adquirido novamente por pthread_cond_wait.<br />

c.2.4<br />

Barreiras<br />

Barreiras são do tipo pthread_barrier_t.<br />

int pthread_barrier_init ( pthread_barrier_t * restrict barrier ,<br />

const pthread_barrierattr_t * restrict attr ,<br />

unsigned count );<br />

Inicializa um objeto do tipo barreira, alocando todos os recursos necessários. Pode-se<br />

inicializar atributos da barreira em attr, ou usar NULL se não serão usados. O número de<br />

threads participando da barreira é passado no argumento count. Retorna zero em caso de<br />

sucesso, ou um número indicando erro:<br />

EAGAIN: o sistema não tem recursos para inicializar mais uma barreira.<br />

EINVAL: o valor de count é zero.<br />

ENOMEM: não há memória suficiente para inicializar a barreira.<br />

int pthread_barrier_wait ( pthread_barrier_t * barrier );<br />

A thread chamadora ficará bloqueada até que todas as n threads tenham chamado<br />

esta função. Retorna PTHREAD_BARRIER_SERIAL_THREAD para uma das threads (escolhida<br />

arbitrariamente) e zero para todas as outras. Se o valor de retorno não for zero ou<br />

PTHREAD_BARRIER_SERIAL_THREAD, houve um erro.<br />

int pthread_barrier_destroy ( pthread_barrier_t * barrier );<br />

Destrói e desaloca o objeto barreira. Retorna zero em caso de sucesso, ou um número<br />

indicando erro.<br />

Versão Preliminar<br />

c.3 mensagens<br />

mqd_t mq_open ( const char *name , int oflag );<br />

338<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!