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