54 lines
958 B
Plaintext
54 lines
958 B
Plaintext
const int N = 5;
|
|
binarysem forks[N];
|
|
binarysem print_sem;
|
|
|
|
void phil(int id)
|
|
{
|
|
int i;
|
|
for(i = 0; i < 1000; i++){
|
|
wait(print_sem);
|
|
cout << "Jestem filozofem o numerze "<<id<<" i mysle" <<endl;
|
|
signal(print_sem);
|
|
|
|
wait(forks[id]);
|
|
wait(forks[(id+1)%N]);
|
|
|
|
wait(print_sem);
|
|
cout << "Jestem filozofem o numerze " <<id<<" i jem po raz " <<i+1<<endl;
|
|
signal(print_sem);
|
|
|
|
signal(forks[id]);
|
|
signal(forks[(id+1)%N]);
|
|
}
|
|
}
|
|
|
|
void phil2(int id)
|
|
{
|
|
int i;
|
|
for(i=0; i<1000; i++){
|
|
wait(print_sem);
|
|
cout <<"Jestem filozofem o numerze "<<id<<" i mysle"<<endl;
|
|
signal(print_sem);
|
|
|
|
wait(forks[(id+1)%N]);
|
|
wait(forks[id]);
|
|
|
|
wait(print_sem);
|
|
cout<<"Jestem filozofem o numerze "<<id<<" i jem po raz "<<i+1<<endl;
|
|
signal(print_sem);
|
|
|
|
signal(forks[(id+1)%N]);
|
|
signal(forks[id]);
|
|
}
|
|
}
|
|
|
|
main(){
|
|
int i;
|
|
for(i=0; i<N; i++)
|
|
initialsem(forks[i], 1);
|
|
initialsem(print_sem, 1);
|
|
cobegin{
|
|
phil(0); phil2(1); phil(2); phil2(3); phil(4);
|
|
}
|
|
}
|