读书人

LINUX下C编程的疑问,该如何解决

发布时间: 2012-02-11 09:51:34 作者: rapoo

LINUX下C编程的疑问
1,在LINUX下多线程编程中,如果对资源还没加锁就解锁,会不会出现问题?
2,加锁之后,有没有可能出现解锁不成功的可能,如果可能是为什么?怎么解决?

[解决办法]
应该是线程死掉,不过具体情况可能会复杂
[解决办法]
1,在LINUX下多线程编程中,如果对资源还没加锁就解锁,会不会出现问题?
不会(首先你的mutex是0,1型),但需要注意mutex需初始化。

2,加锁之后,有没有可能出现解锁不成功的可能,如果可能是为什么?怎么解决?
不会(首先你的mutex是0,1型),但需要注意死锁的情况。
如果下面的code中thread A 和B都刚好执行到0002行时就会产生死锁。
ThreadA
{
0001 lock mutex_a;
0002 ...
0003 lock mutex_b;
0004 ...
0005 unlock mutex_b;
0006 ...
0007 unlock mutex_a;
}

ThreadB
{
0001 lock mutex_b;
0002 ...
0003 lock mutex_a;
0004 ...
0005 unlock mutex_a;
0006 ...
0007 unlock mutext_b;
}

读书人网 >C语言

热点推荐