日期:2014-05-16  浏览次数:21035 次

sem_wait 阻塞的一个诡异问题
程序已经跟踪很多次, 不知为什么 sem_wait(&the_sem); 会阻塞住. 假设该进程的进程号为 pid .
当我用 "strace -ppid" 查看进程的系统调用时, 进程会从阻塞恢复, 并且从此以后完全正常, 不会在同一位置阻塞. 而 strace 的输出也没什么异常.
不知哪位大侠可以给个提示?
sem_wait linux??c strace

------解决方案--------------------
 sem_wait(&the_sem); 这句话的意思就是阻塞,直到有人释放了the_sem这个信号啊
------解决方案--------------------
sem_wait的作用是执行信号量减1,但前提是该信号量为非零值,sem_wait(&the_sem);这句阻塞了,很可能是另外一个地方没有把信号量the_sem置为非零