一个线程不断加锁。
#include<pthread.h>
#include<unistd.h>
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
pthread_mutex_t mtu1;
void* fun1(void* arg)
{
for(int i=0;i<10;i++)
{
pthread_mutex_lock(&mtu1);
}
}
int main()
{
pthread_t tid1;
pthread_mutex_init(&mtu1,NULL);
pthread_create(&tid1,NULL,fun1,NULL);
pthread_exit((void*)0);
}
两个线程互相抢对方的锁。
#include<pthread.h>
#include<unistd.h>
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
pthread_mutex_t mtu1;
pthread_mutex_t mtu2;
void* fun1(void* arg)
{
pthread_mutex_lock(&mtu2);
printf("fun1已经拿到锁2\n");
sleep(1);
for(int i=0;i<10;i++)
{
pthread_mutex_lock(&mtu1);
printf("fun1枪锁%d\n",i);
}
pthread_mutex_unlock(&mtu2);
}
void* fun2(void* arg)
{
pthread_mutex_lock(&mtu1);
printf("fun2已经拿到锁1\n");
sleep(1);
for(int i=0;i<10;i++)
{
pthread_mutex_lock(&mtu2);
printf("fun2枪锁%d\n",i);
}
pthread_mutex_unlock(&mtu1);
}
int main()
{
pthread_t tid1,tid2;
pthread_mutex_init(&mtu1,NULL);
pthread_mutex_init(&mtu2,NULL);
pthread_create(&tid1,NULL,fun1,NULL);
pthread_create(&tid2,NULL,fun2,NULL);
pthread_exit((void*)0);
}