【发布时间】:2012-05-08 04:53:13
【问题描述】:
我有几个线程(实际上是 5 个线程)挂起的特殊情况。原因是它正在等待一个信号量,并且无法抓住它。 ipcs -p 不显示任何具有该信号量的任务。 ipcs -s -i 显示计数为 5。
那么,我怎么知道为什么这 5 个线程没有发生信号量锁?如何查看是否有线程持有此信号量。
(分析调用堆栈,我看不到任何具有信号量的任务。)
感谢您的帮助!
【问题讨论】:
-
您是否在每个与信号量相关的系统调用上检查错误? (semop、semget 等)IIRC、EINTR errno 和与之相关的信号必须正确处理,否则可能会死锁。在 00 年代初期,我经常使用 Informix + Tuxedo。
-
我们正在检查返回码。但是,这是遗留代码,我需要详细访问此代码以查看任何可能的错误
标签: linux ipc deadlock semaphore