QNX4.25多线程信号灯死锁

中文QNX 讨论: 欢迎大家灌水,讨论有关QNX 问题。
回复
qm
Senior Member
帖子: 15
注册时间: 周四 12月 04, 2003 1:47 pm

QNX4.25多线程信号灯死锁

帖子 qm » 周一 4月 04, 2005 10:40 pm

各个线程使用的所有信号灯初始化为全局变量,初始值为1。为了防止某一线程在没有释放信号灯时异常退出引起信号灯死锁,在等信号灯时,如果10秒没有等到,都会调用sem_post()主动释放信号灯,然后调用sem_trywait(),如果释放几次后还没有等到,就sem_wait()。结果程序运行时,有时会发生多个线程间的死锁,处于SEM态。
会是程序在长时间没有等待信号灯时,主动调用sem_post()引起的死锁吗?是不是这样使用信号灯违反了QNX信号灯的使用规则?
极度困惑,请大家指教。

回复