Você deve fazer este EP em C, usando o pacote LinuxThreads, que implementa o padrão pthreads (POSIX Threads) para Linux 2.x. A biblioteca LinuxThreads e sua documentação estão disponíveis na nossa rede Linux. Para mais informações sobre o pacote LinuxThreads, veja
http://pauillac.inria.fr/~xleroy/linuxthreads/Todas as funções POSIX Threads tem nome começando com ``pthread_'' ou com ``sem_'' (estas são operações sobre semáforos). Para listar essas funções, diga
apropos pthread_ apropos sem_Neste exercício você não precisará de todas as funções do pacote LinuxThreads. Você usará funções básicas de gerenciamento de threads (pthread_create, por exemplo) e operações sobre semáforos (sem_init, sem_wait, sem_post e sem_destroy). Não é permitido o uso de operações sobre mutexes (pthread_mutex_...) ou condições (pthread_cond_...). (Mutexes e condições servem para se implementar monitores, que serão o assunto do próximo EP.)
Vários tutoriais sobre pthreads estão disponíveis na Internet. Eis um desses tutoriais:
http://dis.cs.umass.edu/~wagner/threads_html/tutorial.htmlHá também um texto sobre pthreads na pasta 05 do xerox do CAMAT. (Embora seja um bom texto, não é a melhor referência para este EP. Ele explica muito bem mutexes e condições, mas não fala sobre semáforos.)
Este é um FAQ com informações variadas sobre programação com threads (incluindo ``Microsoft-style threads'', caso você precise um dia...):
http://www.serpentine.com/~bos/threads-faq/