henrylee1991 发表于 2013-03-16 16:26

apue 11.6节关于死锁问题

p301避免死锁有一句话:
如果线程试图对同一个互斥量加锁两次,那么它自身就会陷入死锁状态。

这是为什么????

txgc_wm 发表于 2013-03-17 17:25

这就好比以下测试代码的情况#include <string.h>
#include <stdio.h>

int test_lock(int *lock)
{
        while(*lock);

        *lock = 1;

        return 0;
}

int test_un_lock(int *lock)
{
        *lock = 0;

        return 0;
}

int main(int argc, char **argv)
{
        int lock = 0;

        test_lock(&lock);
        test_lock(&lock);

        puts("just for test!");
       
        test_un_lock(&lock);
        test_un_lock(&lock);

        return 0;
}测试代码不严谨,具体查看thread库的实现。
页: [1]
查看完整版本: apue 11.6节关于死锁问题