#include<stdio.h>
#include<pthread.h>
#include<stdlib.h>
#include<time.h>
#include<stdint.h>
int flag[2];
int victim;
int sharedCounter=0;
void lock(int me)
{
int other;
other = 1-me;
flag[me] = 1;
victim = me;
while(flag[other]==1 && victim == me)
{
}
}
void unlock(int me)
{
flag[me]=0;
}
void *peterson(void *ptr)
{
int tId,i;
tId = (int ) (intptr_t) ptr;
for(i=0;i<200;i++)
{
lock(tId);
sharedCounter++;
printf("%d\t",sharedCounter);
sleep(1/10);
unlock(tId);
}
}
main()
{
int i;
for(i=0;i<2;i++)
{
flag[i]= 0;
}
pthread_t t[2];
for(i=0;i<2;i++)
{
pthread_create(&t[i],NULL,peterson,(void *) (intptr_t) i);
}
for(i=0;i<2;i++)
{
pthread_join(t[i],NULL);
}
printf("shared Counter:%d\n",sharedCounter);
exit(0);
}
Bookmarks