Laboratório 1
Como saber o que fazer:
- dê "login".
- entre no netscape
- vá para a página
www.inf.puc-rio.br/~noemi/pc-01/lab1.html
para ler este texto ;-)
Para nos familiarizarmos com a biblioteca pthreads
:
- use esse exemplo para seu primeiro programa.
- compile seu programa com
gcc -Wall -lpthread -o p prog.c
(-Wall
faz o compilador ficar mais exigente, gerando
"warnings" para coisas estranhas; -o p
dá o nome do
programa executável, p
no caso.)
- execute seu programa com
p
ou
./p
(dependendo da configuração do seu Linux,
ele não procura programas no diretório corrente;
o ./p
avisa que você realmente
quer o programa p
do diretório corrente).
- a partir desse exemplo, crie um programa onde dois
threads alteram variáveis compartilhadas ou um arquivo.
- modifique esse seu programa de maneira que exista
uma região crítica em cada um dos threads; tente criar
a situação de interferência, isto é, utilize loops vazios
ou chamadas a
sleep
de maneira a forçar
uma situação onde, ao executar o programa, você veja
que os threads estão ``enxergando'' estados intermediários
indesejáveis.
- Caso dê tempo, programe um protocolo de entrada e
saída na região crítica de seus threads utilizando
a solução chamada por Andrews de tie-breaker.
Veja se você se convence que essa solução funciona,
ou se você acha que existe algum problema nela.