为了账号安全,请及时绑定邮箱和手机立即绑定

如下所示,请问t1会不会永远阻塞?

如下所示,请问t1会不会永远阻塞?

PHP
幕布斯6054654 2023-03-03 14:10:40
我看了很多关于pthread_cond_wait(pthread_cond_t *cond,pthread_mutex_t *mutex)函数的解释,大多人认为这个函数是先判断cond指向的条件变量是否为真,如果不为真的话,就先释放由mutex指向的互斥锁,然后将当前线程(用t1表示)阻塞,即将线程t1挂到与cond指向的条件变量相关的等待队列上。我的疑问是,如果当mutex指向的互斥锁释放以后,还没来得及将线程t1挂到相应的等待队列之前,当前执行流程就被调度了,然后执行另一个线程t2,线程t2中调用pthread_cond_signal函数之后,能对线程t1产生什么影响?
查看完整描述

2 回答

?
开心每一天1111

TA贡献1836条经验 获得超13个赞

这些都是原子操作,不会发生“当mutex指向的互斥锁释放以后,还没来得及将线程t1挂到相应的等待队列之前,当前执行流程就被调度了”的情况

查看完整回答
反对 回复 2023-03-06
?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

pthread_cond_wait(pthread_cond_t *cond,pthread_mutex_t *mutex)
这个函数执行的应该是一个原子操作,所以应该不可能出现你说的那种情况~

查看完整回答
反对 回复 2023-03-06
  • 2 回答
  • 0 关注
  • 76 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信