登录
|
注册
公司
标签
文章
搜索
经典指数
单选题
|
内容运营
用户运营
运维工程师
类别
公司
职位
年份
其他
添加
原因
删除
2204
浏览数
0
收藏数
windows程序中多个线程下,栈和堆是公有的还是私有的( )
还没有评论
分享到:
举报
纠错
0
/
512字
选择纠错区域
题目内容有错
题目标签有错
提交纠错
切换
提交评论
请先
登录
后评论.
1 个答案
0
0
无论在任何环境下,多线程每个线程独自拥有一个栈区(私有),这是由栈和多线程的特性决定的;而在Windows环境下,堆区对于线程而言是公有的(同一进程内每个线程都可以共享)。 线程栈区私有:因为一个栈只有一个栈顶 top,那么我们假设不同线程共用一个栈,那么问题来了,假设当前线程需要进行出栈操作,那么它就会无法确定当前的栈顶元素是属于哪个线程的,是不是自己的。所以正因为栈只能对栈顶进行操作,且只有一个栈顶,所以不同的线程需要维护不同的栈(私有); 线程堆区公有:(注意这里的堆不是算法领域的堆,存储领域的堆只是一个连续自由空间)和栈不同,堆区是通过物理地址来访问存储单元的,堆区空间是自由分配的,每次申请堆空间时都会维护一个堆地址,这样,因为是使用地址访问的,所以不同的线程访问堆空间就不会产生冲突,堆空间完全可以共享(公有)。 最后需要强调的是,以上是针对同一个进程内的不同线程而言的。
还没有评论
举报
切换
提交评论
请先
登录
后评论.
撰写答案
提交回答
通往牛逼的路上,请先登录!
扫描后移动端查看本题
我也分享一个题目
×
登录
注册
找回密码
记住登录
登录
快速注册
直接第三方登录
×
保存答案