回答
如果您在棧上聲明一個變量並將其地址傳遞給另一個線程,那麼您基本上共享一個棧位置。這就是論文所描述的嗎?
或者是提到操作系統支持的文件,使得使用相同堆棧的線程保持EIP/SP等?看起來像是一個等待我發生的問題。我想你可以這樣做,以確保當你知道你的代碼的約束時,每個線程都不會浪費堆棧空間,但看起來像是一種矯枉過正。
它沒有詳細說明任何內容,並且我個人認爲堆棧應該是每個線程都是私有的,但是有沒有人在實踐中做到這一點?我的意思是共享堆棧位置? – Achilles 2010-06-02 16:05:25
進程中的所有線程都可以訪問整個進程的虛擬地址空間 - 因此沒有位置是真正的「每棧」私有的。 系統通過在不同位置存儲每個堆棧幀的EIP/SP和局部變量(堆棧空間在創建線程時初始化)並提供像TLS(線程本地存儲)這樣的工具來嘗試模擬每個線程的私有空間,但無論如何,它最終只是一個幻想。一個巧妙製作的程序當然可以使用相同的堆棧位置來存儲共享數據。在Windows中,您可以在線程創建時指定堆棧大小。 – Alienfluid 2010-06-04 00:10:19
- 1. Java線程從共享堆棧陣列讀取和寫入
- 2. 堆被共享到多個線程嗎?
- 3. 線程堆和堆棧
- 4. 配置boost ::線程堆棧大小
- 5. 遞歸併行線程產卵 - 堆棧位置
- 6. 是否可以在Windows中決定線程的堆棧位置?
- 7. 從堆棧跟蹤,多線程他指出錯誤的位置
- 8. 確定線程的堆棧大小和位置
- 9. 繪製堆棧和線程程序堆
- 10. AngularJS $位置歷史堆棧
- 11. 爲相對位置/堆棧
- 12. 堆棧內存位置
- 13. openCL堆棧位置(遞歸)
- 14. 通過發佈者和消費者線程之間的堆棧共享數據
- 15. 線程的奇怪堆棧
- 16. 線程堆棧指針
- 17. 線程堆棧錯誤
- 18. 線程堆棧分配
- 19. 在堆棧或堆內存中創建線程對象的位置?
- 20. PageContext線程共享
- 21. 線程堆棧和進程堆棧有什麼區別
- 22. 線程訪問/更新共享內存位置
- 23. 確實谷歌應用程序引擎實例共享堆和堆棧?
- 24. TFS 2010內置,放置位置本地不共享共享
- 25. 共享對象的位置
- 26. 使用asmack共享位置
- 27. 位置「包含我的應用程序的共享庫的符號版本目錄」(NDK堆棧)
- 28. Python中的調用堆棧是在線程之間共享還是在多線程和多處理中的進程之間共享?
- 29. 多線程共享變量
- 30. 共享對象和線程
你提到的論文是......? – 2010-06-01 13:19:30
如果論文沒有回答這個問題,我會說這不是一篇很好的論文。 – danben 2010-06-01 13:21:48
它的內容如下:「我們維護通過堆棧指針之外的寄存器訪問堆棧位置的集合,但這是實現的人爲因素,而不是故意計劃支持在線程之間共享堆棧位置的程序。」 本文標題爲:「橡皮擦:多線程程序的動態數據競賽探測器」 我明白這個語句的內容,但我想知道是否可以共享堆棧位置? – Achilles 2010-06-01 13:30:24