发新话题
打印

求教一个关于信号的问题

求教一个关于信号的问题

我的程序有十个工作线程,近期出现一个问题,十个线程会越跑越少,最后只剩下一个线程在工作,其它九个死掉了,首先以前程序在solaris下是很好的,最近移植到suse9上才出现这个问题.分析定位了一月有余,总算可以说找到问题所在:有一个函数中会使用select(0,0,0,0,&timeout)的方法实现睡眠的功能,每个线程在工作的时候都会比较频繁的睡眠一秒,有时候一些线程睡过去就再也不起来了,也就是说吊死在select里了.今天又发现gdb调试时用handle SIG32 nostop nopass阻止SIG32这个信号后程序跑得很好,没有线程睡死.
查了一下好像select在与某些与信号有关的情况下会吊死又不大确定.关键是如何在程序正常运行而不是调试的时候阻止SIG32这个信号,试了signal(SIG32,SIG_IGN)似乎不行,我想象像这么频繁的信号,而我的程序根本没用到,是否应该编译时就有选项把它关掉.是不是我的make文件有问题?
求教.谢谢!

本文由北冥有鱼 发布于Linuxsky 论坛,网址:http://bbs.linuxsky.org/thread-5259-1-1.html

TOP

做一个时间TIMEOUT控制或许能好一些!
技术研讨欢迎访问http://westsoftware.blog.163.com

TOP

不明白,能说得具体点吗,我们用select的时候是有timeout的啊,1秒钟

TOP

发新话题