今天在编程时,在线程a中使用 pthread_cond_signal 试图唤醒另一个阻塞在 pthread_cond_wait 处的线程b,但是却发生了死锁。经过gdb调试发现,是因为线程a中pthread_cond_signal改变条件变量的时候线程b还没有阻塞,因此条件变量的改变被忽略。加入sleep延时一段时间再调用pthread_cond_signal,问题得到了解决。因为这个时候线程b已经阻塞了,条件变量的改变被接收。
Linux多线程程序中条件变量的改变没有唤醒等待此条件变量改变的线程
最新推荐文章于 2021-05-11 11:58:07 发布