You are on page 1of 1

#include<stdio.

h>
#include<string.h>
#include<semaphore.h>
#include<stdlib.h>
#include<unistd.h>
sem_t k;
pthread_t p[2];
int c=0;
void* thread(void *arg) {
sem_wait(&k);
int *i=(int*)arg;
printf("\n Thread Execution started with a counter value : %ld\n",c);
printf("Thread Execution started by thread %d\n",*i);
for(int j=0; j<5;j++){
c++;
printf("counter: %d\n",c);

}
printf("\n Thread Execution completed with counter value : %ld \n", c);
sem_post(&k);
pthread_exit(NULL);
}
int main(void) {
int i ,a[i];
sem_init(&k,0,1);
for(i=0;i<2;i++)
pthread_create(&(p[i]), NULL, &thread, (void *)&a[i]);
for(i=0;i<2;i++)
pthread_join(p[i],NULL);
sem_destroy(&k);
return 0;
}

You might also like