关于线程是否有自己的内存空间的问题
从线程和进程的角度来说,进程是资源分配的最小单位,线程是独立调度的最小单位。
同一个进程中的多个线程之间可以并发执行,他们共享进程资源。
线程不拥有资源,线程可以访问隶属进程的资源,进程有自己的独立空间地址,线程没有自己的独立空间地址,但是线程有自己的堆栈和局部变量。
如何理解线程不拥有独立的地址空间但是线程却可以有私有的栈、程序计数器、本地方法区。
我的一直的理解是,线程的栈、程序计数器、本地方法区也是存放在进程的地址空间上,只是这些栈、程序计数器、本地方法区都只能有某个特定的线程去访问、其他的线程访问不到。
这么理解是对的吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
你的理解是对的,稍微补充一点,线程的栈,其他线程也是可以访问的,只是常规上访问不到,如果你使用C/C++语言的话,数组越界后,很容易就访问到其他线程的栈了,以致有可能导致其他线程的异常。 这一点也从侧面证明一个进程内的多个线程是共享内存的。