PTT
Submit
Submit
选择语言
正體中文
简体中文
PTT
LinuxDev
[问题] C++ creat pthread 内存空间问题
楼主:
gigigigi
(gigigigi)
2018-03-24 09:04:03
http://codepad.org/Ix2KLRMD
我了解是 thread 在 stack 宣告的变量都是每个 thread 各自独立
只有是 global 变量位在.data 跟 heap 是 process 里面所有thread 共享
那我疑问是在上面网址程式里面 main() 函数宣告一个 B class 的 instance b 变量
那这块instace 应该是属于 stack 不是 heap(因为我不是new 出来的)
那我之后呼叫 b.start_thread();
产生两条thread 在 member function add / print 还有 main 函数都用 while(1)
不断印出data 跟 pid & tid , 看起来 class 的 data变量 是共享的~
那我不懂是 B b; 宣告出来的 b 应该属于 stack ,
在同Process 底下的不同 thread 怎么能够存取在 stack instace ?
谢谢
作者:
a1u1usul3
(Q-Max)
2018-03-24 14:20:00
https://upsilon.cc/~zack/teaching/1314/progsyst/cou
rs-08-pthreads.pdfin short : goo.gl/PcpgZMpage 13 看起来main stack会共用,local variable放在每个thread新创的thread stack里
楼主:
gigigigi
(gigigigi)
2018-03-24 20:56:00
后来我想一下应该是 pthread_create最后参数带入this因为都是同个process是在同个 virtual address 下在start_thread 函数把B b 的instance this 指标带入所以这样作法其余子thread 只要取得这个instace 都可以存取这个 instace 里面的data member
作者:
a1u1usul3
(Q-Max)
2018-03-25 03:56:00
yes,那样说也行,但是main thread stack的变量可能会被pop掉,这不是个好写法,到时候修改的值到底是谁的什么会变得都不知道了
继续阅读
[问题] MIPI Camera抓取device资讯
albee306
Fw: [问题] 在rc.local或开机过程执行read指令
remember11
[问题] 关于 kernel source , header , generic
gowrite
[问题] Ubuntu 17.10开启第三方应用程式视窗全空
ruthertw
Re: [问题] 省电模式下要如何管理threads?
DontGoIntel
[问题] 自学OpenBMC
larkes
[问题] 省电模式下要如何管理threads?
timemaker
[问题] jffs2 挂载问题
kaijajan
[问题] Linux KDevelop wxWidgets C++的问题
better4532
Fw: [问题] dlopen load shared object seg fault
antirazin
Links
booklink
Contact Us: admin [ a t ] ucptt.com