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

linux的线程结束信号和sleep使用冲突?
在实现多线程编程时遇到sleep不能使用的问题。具体情况如下:
    由于多个线程各自使用着许多软硬件资源,因此为了能让进程在退出时,底下各个线程能将已使用的资源关闭,我就在主线程中对SIGINT信号进行捕抓。然后当主线程收到SIGINT信号,马上通知各线程进行结束工作(用pthread_cancel通知)。通知完所有线程后,接下来主线程会延时一段时间(用sleep)后调用exit退出。
   就在这里使用sleep时出现了问题,sleep完全无法使用,一调用就返回错误。这是为什么?是不是结束信号与sleep使用的信号有冲突?麻烦谁来帮忙分析一下。

------解决方案--------------------
瞅瞅代码先?
------解决方案--------------------
说明你的sleep被信号中断了,要看一号code才能知道原因
------解决方案--------------------
真没看出问题...
一用sleep就返回错误,是在哪返回的,返回什么样的错误?

引用:
代码如下所示:
=================主线程代码==========================
    sigemptyset(&bset);  
    sigaddset(&bset, SIGINT);//建立一个信号集,将SIGINT添加进去  
    if (pthread_sigmask(SIG_BLOCK, &amp……