linux 线程锁使用问题

最近遇到2个线程锁的问题:记录如下

1)线程锁初始化的方式:    线程初始化,可以有2中方式,a,直接赋初值初始化;b,使用 pthread_mutex();

方式1:unsigned int g_deviceManage.mutex = STATE_INVALID;

方式2:pthread_mutes_init(g_deviceManage.mutex);

2)死锁问题:在一个函数func( )中,已经获取到锁,但在子函数func_a( )中,却又对全局变量进行加锁,解锁处理;后面func( )中解锁,这样就造成了死锁,即func( ) 中已获取到锁,所以在func_a( ) 中永远得不到锁,这样程序就阻塞挂死了;

比如:

void func_a(void)
{
    pthread_mutex_lock(g_deviceManage.mutex);
    unsigned int state = g_deviceManage.state;
    pthread_mutex_unlock(g_deviceManage.mutex);
}

func(void) 
{
    pthread_mutex_lock(g_deviceManage.mutex);
    ......
    ......
    func_a();
    pthread_mutex_unlock(g_deviceManage.mutex);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值