社区
Linux/Unix社区
帖子详情
UNIX线程共用一个变量,出现core dump
zshtiger2414
2009-11-19 05:26:58
在UNIX系统下,创建多线程,做了两个测试程序。
这两个测试程序中都用到线程访问全局变量,但是有一个程序core dump了,一个程序没有core dump,这是为什么啊?
请问哪个达人能帮忙啊?
...全文
124
9
打赏
收藏
UNIX线程共用一个变量,出现core dump
在UNIX系统下,创建多线程,做了两个测试程序。 这两个测试程序中都用到线程访问全局变量,但是有一个程序core dump了,一个程序没有core dump,这是为什么啊? 请问哪个达人能帮忙啊?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Caballeroo
2009-11-23
打赏
举报
回复
[Quote=引用 8 楼 zshtiger2414 的回复:]
引用 6 楼 caballeroo 的回复:
core dump 是代码segmentation fault时记录内存中数据的文件。
一般需要使用ulimit -c size,才会在代码异常时产生一个core文件。
你的代码应该有内存的非法写入等操作!
正象你说的那样子在程序中几个现成对对stderr进行了写入操作的时候出现了core dump!
这样的错误应该怎么样去避免啊?
[/Quote]
这种错误要是避免的话,完全靠平时写代码的注意点了!
zshtiger2414
2009-11-23
打赏
举报
回复
[Quote=引用 6 楼 caballeroo 的回复:]
core dump 是代码segmentation fault时记录内存中数据的文件。
一般需要使用ulimit -c size,才会在代码异常时产生一个core文件。
你的代码应该有内存的非法写入等操作!
[/Quote]
正象你说的那样子在程序中几个现成对对stderr进行了写入操作的时候出现了core dump!
这样的错误应该怎么样去避免啊?
一 铭
2009-11-21
打赏
举报
回复
这怎么说的准哦, 代码贴上来才知道
morris88
2009-11-21
打赏
举报
回复
把代码贴上来瞧瞧...
Caballeroo
2009-11-21
打赏
举报
回复
core dump 是代码segmentation fault时记录内存中数据的文件。
一般需要使用ulimit -c size,才会在代码异常时产生一个core文件。
你的代码应该有内存的非法写入等操作!
wuyu637
2009-11-19
打赏
举报
回复
如果两个线程都同时往里写,是会有问题的。
你可以先申明一个和那个全局变量一样,只有名字有差异的副本,让其中一个线程,访问副本,另外一个线程访问原来的变量,如果程序不会奔溃,就说明是同步的问题。
或者就直接点用简单的同步方法,mutex_lock之类的,防止这种情况
zshtiger2414
2009-11-19
打赏
举报
回复
[Quote=引用 1 楼 steedhorse 的回复:]
应该是其它的原因。
仅仅因为两个线程访问同一个变量不至于core dump,线程之间共享的东西还多着呢。
[/Quote]
我看了一下程序,真的就是因为程序用fprintf向stderr写东西的时候,因为系统内部调用pthread_mutex_lock函数出错了。
是不是因为这种加锁就可以使得在向某个变量写的时候,就会出现错误啊?
Wenxy1
2009-11-19
打赏
举报
回复
用gdb调试下。
晨星
2009-11-19
打赏
举报
回复
应该是其它的原因。
仅仅因为两个线程访问同一个变量不至于core dump,线程之间共享的东西还多着呢。
c++牛客总结
const修饰类的成员
变量
目标是常量不能被修改;const修饰类的成员函数,表示该函数不会修改类的数据成员,不会调用其他非const的成员函数。声明是告诉编译器
变量
的类型和名字,不会为
变量
分配空间定义就是对这个
变量
和函数进行内存分配和初始化。需要分配空间,同
一个
变量
可以被声明多次,但是只能被定义一次C++ STL从广义来讲包括了三类:算法,容器和迭代器。算法包括排序,复制等常用算法,以及不同容器特定的算法。
进程和
线程
1、基本概念: 1.1定义 进程是具有一定独立功能的程序关于某个数据集合的一次运行活动,进程是操作系统进行资源分配和调度的
一个
独立单位;它可以申请和拥有系统资源,是
一个
动态的概念,是
一个
活动的实体,它不只是程序的代码,还包括当前的活动,通过程序计数器的值和处理寄存器的内容来表示。
线程
是进程的
一个
实体,是cpu调度和分派的基本单位,它是比进程更小的能独立运行的基本单位,
线程
自己基本...
(大集合)Linux进程和
线程
的基本编程、通讯和例程【杂记】
真正的全面!对 Linux 进程 和
线程
的基本 编程、通讯(IPC、
线程
同步) 和 例程 做
一个
大总结
【Linux】
线程
的概念{虚拟地址堆区细分/缺页中断/页/初识
线程
/创建
线程
/优缺点}
初识
线程
,Linux下的
线程
是各大设计者的精心之作!
【面经专栏】自己整理的操作系统面经
1、需要
线程
频繁加锁解锁的场景,怎么优化CPU性能 临界区处理很快,也许用 spin lock(自旋锁) 或者 lock-free 算法,临界区处理很慢, mutex 更合适 lock-free:是一种编程思想,指的是使用多
线程
的条件下,尽量少使用锁以降低
线程
之间互相阻塞的机会;在一系列访问 Lock-Free 操作的
线程
中,如果某
一个
线程
被挂起,那么其绝对不会阻止其他
线程
继续运行 不要使用自旋锁,因为
线程
得不到锁的时候会一直在循环等待,不会进入休眠 使用互斥锁,结合条件
变量
,引入
线程
的等待与通知机
Linux/Unix社区
23,217
社区成员
74,540
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章