多线程中信号使用问题

时间变 发布于 2013/09/05 12:08
阅读 215
收藏 0
在主进程中,生成一个线程,这个线程处理一些内容,实现从一个目标中取出一些内容,其中会使用到while(1)这样的死循环,要想结束这样的循环就必须设置一个超时机制,在使用alarm()函数时,发现,在这个线程中当接收到SIGALRM信号后就会把当前的主进程杀掉了,但是这个线程并没有杀掉,不能退出,有什么好办法实现这个功能呢?
加载中
0
leh
leh
你子线程收到信号后跳出while循环了吗,至少来个break跳出循环,跳出后子线程自动执行完run方法就结束。
时间变
时间变
可能我没表达明白。是这样,我有一个函数,里面存储了一些消息。我在主函数中通过调用这个函数就可以得到一条消息,当然是用while循环就可以一直取消息,直到取完,取完以后,需要这个函数中有个超时机制来实现退出
0
道友慢走
道友慢走

你可以用一个信号量,进入while(1)以后,就waitforSingleObject(),等到以后,去检查另一个线程的状态,如果是已退出状态,自己break出去,如果是没结束,就执行该执行的,然后再次waitforSingleObject等待。

线程最好让其结束后自动退出,杀死一个线程不是好的解决方案。

返回顶部
顶部