Laboratório 5 - 11/4/2001

Na aula de 9/4, discutimos o conceito de semáforos. A biblioteca pthreads disponibiliza um mecanismo de semáforos, apesar desse não ser o principal mecanismo de sincronização associado a pthreads, como veremos mais tarde.

Para ter uma idéia do funcionamento dos semáforos em pthreads, veja a implementação de Andrews, apresentada na página 187, do programa do produtor/consumidor com buffer limitadíssimo. Observe a necesidade de incluir o arquivo semaphore.h! Observe também que os semáforos são variáveis como outras quaisquer, que devem ser declaradas globalmente. Depois de compilar o programa, por exemplo gerando prodcons, execute: prodcons num_iteracoes

Utilize man para entender as chamadas às funções de semáforos.

Tarefas da aula (ou semana) de hoje:

  1. Reescreva a função de barreira construída na aula de 2/4, agora com semáforos. Para construir a idéia de barreira simétrica, utilize o array de arrays de semáforos discutido na segunda-feira.
  2. Altere seu programa do caminho mais curto para que ele chame a barreira construída agora, com semáforos.
  3. Caso você não tenha feito o programa de ordenação descrito no lab passado, faça-o agora. Observe que havia um erro de enunciado, já corrigido. Implemente o programa com a barreira de semáforos.
  4. Implemente a barreira com um thread coordenador. Execute novamente o programa da ordenação com a nova barreira.