免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 8882 | 回复: 12

linux posix线程异常退出 [复制链接]

论坛徽章:
0
发表于 2012-06-04 23:59 |显示全部楼层
大家好,
         linux环境下,有个main主线程,主线程里创建了个子线程,比如说example。

         example的结构是
         int i;
         i = 1;
         while(i)
         {
             ;
          }

         现在出现的问题是main线程还在,但是example线程退出了。


          按道理这个线程应该一直循环中,除非i值被改变,但是while里没有return之类的,想问下大家有没有思路?

论坛徽章:
0
发表于 2012-06-05 08:47 |显示全部楼层
举例, 例子代码 .

论坛徽章:
0
发表于 2012-06-05 09:16 |显示全部楼层
仔细看描述吧回复 2# fdl19881


   

论坛徽章:
0
发表于 2012-06-05 11:41 |显示全部楼层
回复 3# uhnafhll


        你这问题一看就知道**非共性问题** , 当然你得提供个简单的代码,然后我们再直接copy后试验。才能给出答案吧。
我顺手写了个.
当子线程退出,那么整个程序就会结束。

目前已经运行了1分钟,没发现异常。  我去吃个饭,看他退出没有 (我估计是不会退出)  。  
初步猜测是你的程序可能太大型了,自己写的代码问题。

#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>

void *thread(void *args)
{
        int i;
        i = 1;
        while(i)
        {
                ;
        }
        return NULL;
}

int main(void)
{
        pthread_t tid;
        void *stat;

        if(pthread_create(&tid , NULL ,
                                                thread , NULL) != 0) {
                fprintf(stderr , "pthread_create error\n");
                exit(-1);
        }

        if(pthread_join(tid , &stat) != 0){
                fprintf(stderr , "pthread_join error\n");
                exit(-1);
        }

        printf("warning! thread exit!\n");
        exit(0);
}

论坛徽章:
0
发表于 2012-06-05 12:28 |显示全部楼层
吃完饭,还在运行。
LZ还是反思下自己的代码问题吧。  毕竟c语言,gcc,pthread这些都是经过长久的实践考验了的。

论坛徽章:
0
发表于 2012-06-05 16:14 |显示全部楼层
回复 5# fdl19881
兄弟,你误解我了,我不是怀疑标准本身。我是想问下,大家在项目中有没有遇到类似的情况?看看能不能提供下思路?谢谢


   

论坛徽章:
0
发表于 2012-06-05 16:27 |显示全部楼层
回复 6# uhnafhll


    我不是说标准的问题..  我只是个菜鸟 ..
你的问题还是请高手来答吧,  

论坛徽章:
1
白羊座
日期:2013-09-18 22:02:26
发表于 2012-06-05 22:34 |显示全部楼层
你反汇编就知道你的i的值在寄存器里面,除非有人修改了寄存器,否则,哪怕野指针,数组下标越界都不可能改变你i的值。

所以,看你代码把。

论坛徽章:
26
处女座
日期:2016-04-18 14:00:4515-16赛季CBA联赛之深圳
日期:2020-06-02 10:10:5015-16赛季CBA联赛之广夏
日期:2019-07-23 16:59:452016科比退役纪念章
日期:2019-06-26 16:59:1315-16赛季CBA联赛之天津
日期:2019-05-28 14:25:1915-16赛季CBA联赛之青岛
日期:2019-05-16 10:14:082016科比退役纪念章
日期:2019-01-11 14:44:062016科比退役纪念章
日期:2018-07-18 16:17:4015-16赛季CBA联赛之上海
日期:2017-08-22 18:18:5515-16赛季CBA联赛之江苏
日期:2017-08-04 17:00:4715-16赛季CBA联赛之佛山
日期:2017-02-20 18:21:1315-16赛季CBA联赛之天津
日期:2016-12-12 10:44:23
发表于 2012-06-05 22:40 |显示全部楼层
这个真没办法了,自己的代码多查查吧

论坛徽章:
0
发表于 2012-06-09 17:28 |显示全部楼层
你父线程修改了i
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP