Domin1c0's Blog

A technical blog sharing my journey in programming, development, and open source.

View on GitHub
22 July 2025

deadlock

by

死锁

1.自己锁自己:

//定义一把锁
pthread_mutex_t mutex;

void *mythread(void *args)
{
    while(1)
    {
        //加锁两次
        pthread_mutex_lock(&mutex);
        pthread_mutex_lock(&mutex);

        printf("hello");
        sleep(rand()%3);
        printf("world");
        //解锁一次
        pthread_mutex_unlock(&mutex);
    }
}

2.A 线程占用着 A 锁,又想去获得 B 锁; B 线程占用着 B 锁,又想去获得 A 锁,两个线程都不释放自己的锁,又想去获得对方的锁,从而造成了死锁
解决方法:

tags: 进程 - 线程同步