a4565219 2014-09-04 02:00 采纳率: 0%
浏览 2138

linux 下c 程序,开了1024个线程 依次等待共同完成某个任务,程序异常退出,不出core

程序简单来说类似一个多线程下载器,开了1024个线程,然后并发去服务器读取一个大文件的某一块,读取完成后,文件合并要按照顺序写文件,所以我采用了pthread_join依次等待上一个线程写完成操作。测试时候发现程序偶尔会突然down掉,也不出core,并不是总down,也会有成功执行时候。机器配制足够高了,内存96G,24核cpu。。。希望大家帮忙分析下。。谢谢,代码逻辑如下。

void* thread_fun()
{
     ......

     if(id != 0)pthread_join(thread_list[id - 1],NULL);//等待上一个线程结束
       write(fd,th_d->file,file - th_d->file);//写文件

}
  • 写回答

2条回答 默认 最新

  • 小邓在路上 2014-09-10 01:00
    关注

    想了一下,想不出原因,你加GDB调试一下喽,看看在哪core dump 掉的,不出core 你是不是没有设置啊,
    linux 默认的core 文件是不打开的,你需要设置一下他的大小,或者是不限制大小。
    #ulimit -c unlimite 设置core 文件大小为不限定状态就可以打开了,

    评论

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?