我有一个特殊的情况,两个线程(实际上5线程)挂。原因是它正在等待一个信号量,而无法获取该信号量。
ipcs-p不显示任何具有该信号量的任务。
ipcs-s-i显示的计数是5。
那么,我怎么知道为什么这5个线程没有发生信号量锁呢?如何查看是否有线程持有此信号量。
(分析调用堆栈时,我看不到任何具有信号量的任务。)
感谢您的帮助!

最佳答案

我将围绕信号量的使用编写一些调试代码(即,在每次使用之前和之后,都要编写那些信号量函数,指定使用哪个信号量和哪个线程)。此外,我会再次检查,以确保您的代码没有任何死锁。这很容易实现nu,确保您以相同的顺序使用各种信号量以获得互斥锁,并以相反的顺序释放锁。
除此之外,没有代码我也帮不了你什么忙。

10-07 19:19
查看更多