关于条件锁和互斥锁(pthread_cond_t和pthread_mutex_t)的疑问

2 篇文章 0 订阅

  这两天考虑互斥锁的原理,做了一些代码测试,反倒越来越迷惑了。

 

 

Test类模拟单例类,为了让多个线程并发,添加了条件锁,在func()不加锁的情况下,i一直等于1,说明多个线程没出现不同步的情况,但出现了一下问题:

      1. 将条件锁加到main中时,即在进程中触发singal,此时线程中的wait依然阻塞,但在另一个单独的线程触发singal时,没有问题。难道这些锁只为线程准备的?

      2. 用pthread_cond_signal(&_cond)时,只能触发一个线程不在等待,系统会调度哪个线程开始工作,其他线程依然wait阻塞,这个应该理解对了,所以用broadcast时才能出发所有线程。

      3. 在static void func()这个静态函数中,初始化一个局部变量的锁,到底有没有作用?是不是非要弄成全局的或成员变量等形式,不能用局部变量呢?这个怎么也试不出来。

      4. 模拟了半天,多个线程阻塞后,接到singal后,同时开始工作,也没有出现i的异常,不解,难道模拟线程同时工作有问题?

 

待解中……

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值