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

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

幕布斯6054654
浏览 61回答 2
2回答

开心每一天1111

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

慕盖茨4494581

pthread_cond_wait(pthread_cond_t *cond,pthread_mutex_t *mutex)这个函数执行的应该是一个原子操作,所以应该不可能出现你说的那种情况~
打开App,查看更多内容
随时随地看视频慕课网APP