You are on page 1of 1

#include<stdio.

h>
#include<unistd.h>
#include<stdlib.h>
#include<pthread.h>
#include<semaphore.h>
void func1();
void func2();
int shared=1;
pthread_mutex_t l1,l2;
int main()
{
pthread_mutex_init (&l1,NULL);
pthread_mutex_init (&l2,NULL);
pthread_t th1,th2;
pthread_create(&th1,NULL,func1,NULL);
pthread_create(&th2,NULL,func2,NULL);
pthread_join(th1,NULL);
pthread_join(th2,NULL);
}
void func1()
{
pthread_mutex_lock(&l1);
printf("Lock lock1");
sleep(1);
pthread_mutex_lock(&l2);
printf("Lock lock2");
pthread_mutex_unlock(&l1);
pthread_mutex_unlock(&l2);
}
void func2()
{
pthread_mutex_lock(&l2);
printf("Lock lock2");
sleep(1);
pthread_mutex_lock(&l1);
printf("Lock lock1");
pthread_mutex_unlock(&l2);
pthread_mutex_unlock(&l1);
}

You might also like