进程与线程的问题

发布于 2022-10-15 04:57:53 字数 206 浏览 26 评论 0

请大家帮帮忙,在《UNIX环境高级编程》一书中的第一章1.6小节中有这样一句话:All the threads within a process share the same address space, file descriptors, stacks, and
process-related attributes.。
为什么线程之间还共享stacks????请高手指点。。。。。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

不知所踪 2022-10-22 04:57:53

Because they can access the same memory, the threads need to synchronize access to shared data among themselves to avoid inconsistencies.

后面这句话不是解释的很明白么 ....   为了避免不一致性

寻梦旅人 2022-10-22 04:57:53

All the threads within a process share the same address space, file descriptors, stacks, and
process-related attributes. Because they can access the same memory, the threads need to
synchronize access to shared data among themselves to avoid inconsistencies.

后面那句是说:因为线程能够访问相同的内存(这里应该是指全局变量,静态变量,常量),所以线程在访问共享的数据时需要采用同步机制,以此来避免数据不一致。好像不是解释第一句话的。

stacks是栈,按道理来说每个线程都有自己的局部变量,所以对每个线程来说,栈都是各自的(临时开辟的),所以不能共享。

不知仁兄有何高见,请指点。。。。。

禾厶谷欠 2022-10-22 04:57:53

回复 2# chiyiangel

    All the threads within a process share the same address space, file descriptors, stacks, and
process-related attributes. Because they can access the same memory, the threads need to
synchronize access to shared data among themselves to avoid inconsistencies.

后面那句是说:因为线程能够访问相同的内存(这里应该是指全局变量,静态变量,常量),所以线程在访问共享的数据时需要采用同步机制,以此来避免数据不一致。好像不是解释第一句话的。

stacks是栈,按道理来说每个线程都有自己的局部变量,所以对每个线程来说,栈都是各自的(临时开辟的),所以不能共享。

不知仁兄有何高见,请指点。。。。。

爱她像谁 2022-10-22 04:57:53

回复 4# bin_linux96

    以我拙见, 线程共享的一些数据在进程的栈中, 每个线程也有自己的栈空间来维护自己的一些信息。所以不矛盾吧

南风几经秋 2022-10-22 04:57:53

如果1个进程有4M的栈,这个进程下的所有线程共享这4M的栈,而其他进程会有单独的4M的栈。

乖乖 2022-10-22 04:57:53

回复 5# crazyhadoop

    嗯,好像有点道理,但是如果是讨论线程的话,那么就不存在进程栈这个说话了。栈是临时开辟的,用于保存局部变量以及一些临时变量。

水波映月 2022-10-22 04:57:53

回复 7# bin_linux96

    这个肯定有啊~线程也要依附在进程上啊~有些进程自己的数据肯定要存放在 自己的栈里呐。这也就是为什么线程不能随意return的原因。

花开雨落又逢春i 2022-10-22 04:57:53

比如一个家族有几口水缸,几个兄弟,不分家,每家兄弟都可以用家族的所有水缸;几户人家,水缸是各自的,不能用别人的。

一个进程,就那么3G用户空间,堆啊栈啊就在那摆着,线程就在进程这3G里面,就像几个兄弟,大部分东西都随便用,你的我看得见我的你也看得见,只要知道在哪就能用。

无远思近则忧 2022-10-22 04:57:53

进程和线程的概念 ...
我的理解是 进程开辟的 线程能用...  但是不确定会 用哪一块  可能线程A用到了地址1  线程2 也用到了地址1 这就需要共享了...  为了避免同时使用一块地址的不一致性

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文