关于线程问题

rick29 2007-06-06 12:51:45
目前在学习多线程编程,《Windows核心编程》书中说:线程的堆栈是从进程的地址空间中分配而来,那么线程能访问同一进程中其他线程的堆栈。
如果能访问同一进程其他线程的堆栈,那么在堆栈中创建的局部变量等不是也能共享了?
这样对吗?
...全文
188 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
rick29 2008-03-17
  • 打赏
  • 举报
回复
老婆问的问题的确比较可爱。。。帮结了。
晨星 2007-06-06
  • 打赏
  • 举报
回复
说尽量不要这样做的原因是因为这样几乎就没啥好处,而且控制起来也麻烦,尤其是生命周期问题。
晨星 2007-06-06
  • 打赏
  • 举报
回复
完全可以啊。比如一个线程把自己栈上的一个变量的地址写到一个全局的指针变量中,另一个线程就可以看到了。
但尽量不要这样做。
taodm 2007-06-06
  • 打赏
  • 举报
回复
能访问。栈中变量当然能多线程访问了。但称“共享”就没什么意义了。
栈变量的生命期一般很短,多线程访问对这个生命期控制是比较痛苦的。
晨星 2007-06-06
  • 打赏
  • 举报
回复
当然,“访问对方栈上的某个对象”跟“访问对方的栈”,这两种说法给人以讨论范围上的差别。我主要想说的是前者。
希望楼主也能明白:你想访问一两个对象可能是没有问题的,而且也不是什么新闻。但如果你想完全控制对方的栈,比如岂图用对方的栈做为另一个线程的函数执行栈,那当然是做不到的。
Wolf0403 2007-06-06
  • 打赏
  • 举报
回复
不禁止,不保证。简单这么说,你可以,但是你不要去这样做。
多线程程序需要严格的设计。
晨星 2007-06-06
  • 打赏
  • 举报
回复
也不能说完全没有意义,有时一个线程创建另一个线程的时候,完全可以把自己栈上的一个对象的地址作为线程函数的参数传过去,这没啥不好的。
zzw_happy 2007-06-06
  • 打赏
  • 举报
回复
完全可以啊。比如一个线程把自己栈上的一个变量的地址写到一个全局的指针变量中,另一个线程就可以看到了。
但尽量不要这样做。
--------
使用这样的一些方法来达到目的是没有意义的。而且和编译器有关系。
可以认为线程不能互相访问对方的栈。

64,666

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧