免费注册 查看新帖 |

Chinaunix

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

线程资源的一些问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-12-26 23:48 |只看该作者 |倒序浏览
记得在apue2上面看到关于线程中有这样一段话,大致意思是,一个线程有自己的堆栈,可以在堆栈上分配内存,比如说一个结构体,如果这个线程调用了pthread_exit()返回这个结构体指针的时候之后要特别的小心,因为很有可能这个结构体里面的成员值发生改变,这个可以理解,因为同一个进程所有线程的资源是共享的,当这个线程退出之后那部分以前用过的堆栈很可能被其它线程占用,但同时又说如果malloc就不会出现这样的问题,我有一点不太不明白的是:malloc申请的资源和线程在堆栈中申请的资源为什么会不一样?

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2006-12-27 00:05 |只看该作者
准确的说,线程有自己的栈,
malloc是在堆上申请。

论坛徽章:
0
3 [报告]
发表于 2006-12-27 08:04 |只看该作者
malloc分配的内存也是可以在线程间共享的~~

论坛徽章:
0
4 [报告]
发表于 2006-12-27 08:37 |只看该作者
好好看书,堆和栈的区别。
线程间共享与否和malloc有什么关系?

论坛徽章:
0
5 [报告]
发表于 2006-12-27 10:11 |只看该作者
返回这个结构体指针的时候之后要特别的小心,因为很有可能这个结构体里面的成员值发生改变,这个可以理解,因为同一个进程所有线程的资源是共享的,当这个线程退出之后那部分以前用过的堆栈很可能被其它线程占用


栈上的空间, 不用的时候, 会在分给新的线程或者函数使用, 就像在一个函数内部分配的数组, 在函数推出的时候可以返回这个地址, 但是里边的值是不能保证的.

不知道这样理解对不对, 我个人也一直对主进程和各个线程直接究竟共享了什么, 甚至什么是共享, 不是很清楚. 共享是不是就是可以访问和修改?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP