首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2012-02-11 
LINUX下C编程的疑问1,在LINUX下多线程编程中,如果对资源还没加锁就解锁,会不会出现问题?2,加锁之后,有没有

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;
}

热点排行