1

我有几个线程(实际上是 5 个线程)挂起的特殊情况。原因是它正在等待一个信号量,并且无法抓住它。ipcs -p 不显示任何具有该信号量的任务。ipcs -s -i 显示计数为 5。

那么,我怎么知道为什么这 5 个线程没有发生信号量锁?我如何查看是否有任何线程持有这个信号量。

(分析调用堆栈,我看不到任何具有信号量的任务。)

感谢帮助!

4

1 回答 1

1

我会围绕信号量的使用编写一些调试代码(即,在每个信号量函数之前和之后,指定正在使用哪个信号量和哪个线程)。此外,我会仔细检查以确保您的代码没有任何死锁。这很容易实现,确保您以相同的顺序使用各种信号量来获得互斥锁和相反的顺序来解除锁。

除此之外,没有代码我能给你的帮助很少。

于 2012-05-08T05:03:31.337 回答