关于多线程栈空间的若干问题

转载 2012年03月30日 22:36:33
1.一个进程应该有自己独立的进程空间。

应当说每个进程各自拥有其独立的地址空间.都是虚地址,在32位机上都是0-4G

2. 而创建了多线程,各个线程要求有自己独立的栈,这些独立的栈是怎么分布的呢?

栈应当是一个动态地概念,只有在线程开始执行后,才为其分配栈资源.具体的分布是无法确定的.我觉得这就像
调用函数一样,当调用函数时,进程通过调整栈基址指针寄存器和栈顶指针寄存器,为函数分配了一个栈空间.
能够确定的是,这片空间肯定是在进程的栈区内划分出来的一片地址空间.

单线程程序只不过是多线程的一种特殊形式,每创建一个线程时,为每一线程在进程内的栈空间上化分出一片区域,作为该线程的栈空间.并且在线程的描述结构里面应当有保存某些寄存器如esp,ebp之类的数据结构的定义.


是否都是在一个线性地址空间内呢?

在同一个进程内,就在同一线性地址空间内.


但也因为线程共用栈空间,产生很多同步问题

同步问题不是由此引入的.
进程内的线程共享进程的栈空间,但在栈空间内,每一线程都有其独立的栈区.

多线程编程时,需要进行同步访问的数据有三种,一种是全局变量,一种是动态分配的变量,还有一种是函数内的局部静态变量,这三种类型的变量都不存在于栈里面.

指针在子函数中分配空间若干问题

如果想要在子函数中为指针分配空间,那么参数应该是指针,还是指针的引用呢?0、知识储备:指针与cout#include #include #include using namespace std;int...
  • BruthYU
  • BruthYU
  • 2016年09月25日 14:11
  • 392

线程栈空间的大小

一直做Windows服务器向Linux平台的移植工作,对于线程的栈空间也是似懂非懂,因而出现了一些问题和总结了部分经验,供大家分享。 在我的服务器上启动了286个线程后,其后的线程启动失败了,返回的...

嵌入式系统中关于程序中线程栈空间的使用

嵌入式系统中关于程序中线程栈空间的使用

c#中多线程访问winform控件的若干问题

我们在做winform应用的时候,大部分情况下都会碰到使用多线程控制界面上控件信息的问题。然而我们并不能用传统方法来解决这个问题,下面我将详细的介绍。       首先来看传统方法:   ...

模糊控制工程应用若干问题研究

  • 2015年12月09日 13:21
  • 9.39MB
  • 下载

路灯配电系统若干问题的探讨

  • 2013年12月26日 14:46
  • 295KB
  • 下载

手动测试和修改多线程中栈空间大小。

每个线程都有一个堆栈那么,这个堆栈多大呢? HANDLE CreateThread(        LPSECURITY_ATTRIBUTES lpThreadAttributes,        ...

MIMO雷达信号检测的若干问题研究

  • 2014年08月17日 13:00
  • 4.28MB
  • 下载

多线程 栈空间变量 可见性

今天看couchbase 回调代码的时候发现 callback 函数有一个参数是 cookie,相当于一个调用异步函数时的上下文。 http://docs.couchbase.com/develop...
  • wschli
  • wschli
  • 2015年05月08日 22:23
  • 765
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于多线程栈空间的若干问题
举报原因:
原因补充:

(最多只允许输入30个字)