Wednesday, 19 February 2014

Creating a deadlock situation - Programming in C

Use the following header files:

stdio.h
pthread.h
unistd.h

program:


pthread_mutex_t fir_mx;
pthread_mutex_t sec_mx;

 void *fn1()
 {
  pthread_mutex_lock(&fir_mx);
  pthread_mutex_lock(&sec_mx);
  printf("Thread 1 locks mutex\n");
  pthread_mutex_unlock(&sec_mx);
  pthread_mutex_unlock(&fir_mx);
 }
 void *fn2()
 {
  pthread_mutex_lock(&sec_mx);
  pthread_mutex_lock(&fir_mx);
  printf("Thread 2 locks mutex\n");
  pthread_mutex_unlock(&fir_mx);
  pthread_mutex_unlock(&sec_mx);
 }
 int main(void)
 {
 pthread_t tid1;
 pthread_t tid2;
 pthread_mutex_init(&fir_mx,NULL);
 pthread_mutex_init(&sec_mx,NULL);
 int t;
 while(1)
 {
 pthread_create(&tid1,NULL,fn1,NULL);
 pthread_create(&tid2,NULL,fn2,NULL);
 pthread_join(tid1,NULL);
 pthread_join(tid2,NULL);
 }
 }













No comments:

Post a Comment