免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2877 | 回复: 2
打印 上一主题 下一主题

求助:在pthead线程中使用localtime_r出错,请各位大侠帮忙! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-07-12 20:33 |只看该作者 |倒序浏览
我在 SUN880 Solaris8上开发了一个多线程程序,使用pthread线程,用 cc 编译器进行编译。\r\n  程序的线程结构是这样,主线程启动后创建了4个 pthread 线程,这四个 pthread 线程一直运行,直到进程结束才退出。因为需要在多个线程中同时获取系统时间,所以程序中使用了 localltime_r 函数。各个线程中对 localltime_r 的调用频度很高,每秒平均 200 多次,现在发现这样的问题,程序运行起来后,10几秒很快出现内存访问错误。用dbx查看core文件后发现错误出现在子线程,即主线程创建的pthread线程中对localltime_r的调用点上。\r\n  我把子线程中对 localltime_r 的调用注释掉,只保留主线程中对 localltime_r 的调用,编译后程序稳定运行。但只要一打开子线程中对 localltime_r 的调用,同样的内存访问错误就出现在子线程中 localltime_r 的调用点上。偶尔的几次还会出现该子线程的堆栈被破坏,出错点不明的情况。\r\n  我怀疑该错误情况是不是与 Solaris 下对 pthread 的实现有关,因为主线程中的调用没有出错。\r\n  查了一天没有找到原因,请各位大侠帮忙。

论坛徽章:
0
2 [报告]
发表于 2004-07-14 11:26 |只看该作者

求助:在pthead线程中使用localtime_r出错,请各位大侠帮忙!

你给线程重新分配一下堆栈。

论坛徽章:
0
3 [报告]
发表于 2004-07-14 20:00 |只看该作者

求助:在pthead线程中使用localtime_r出错,请各位大侠帮忙!

wlkwlk能说的清楚点吗,我现在的做法是在线程创建的时候,用pthread_attr_setstacksize设置了堆栈大小,但还是同样出错。\r\n  不知道你说的分配堆栈具体是指什么.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP