回答
如果您在棧上聲明一個變量並將其地址傳遞給另一個線程,那麼您基本上共享一個棧位置。這就是論文所描述的嗎?
或者是提到操作系統支持的文件,使得使用相同堆棧的線程保持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. 確定線程的堆棧大小和位置
- 7. 是否可以在Windows中決定線程的堆棧位置?
- 8. openCL堆棧位置(遞歸)
- 9. 爲相對位置/堆棧
- 10. 堆棧內存位置
- 11. AngularJS $位置歷史堆棧
- 12. 線程的奇怪堆棧
- 13. 在堆棧或堆內存中創建線程對象的位置?
- 14. PageContext線程共享
- 15. 線程堆棧和進程堆棧有什麼區別
- 16. TFS 2010內置,放置位置本地不共享共享
- 17. 共享對象的位置
- 18. 位置「包含我的應用程序的共享庫的符號版本目錄」(NDK堆棧)
- 19. Python中的調用堆棧是在線程之間共享還是在多線程和多處理中的進程之間共享?
- 20. 多線程 - 共享數據
- 21. 共享列表線程
- 22. C#線程共享數據
- 23. 是線程池共享 - .net
- 24. Spring Boot共享線程
- 25. 燒瓶線程共享值
- 26. 跨進程共享位圖
- 27. 堆棧設置
- 28. 確定堆棧頂部的位置
- 29. 堆棧溢出的C變量位置
- 30. 兩個進程共享相同的堆
你提到的論文是......? – 2010-06-01 13:19:30
如果論文沒有回答這個問題,我會說這不是一篇很好的論文。 – danben 2010-06-01 13:21:48
它的內容如下:「我們維護通過堆棧指針之外的寄存器訪問堆棧位置的集合,但這是實現的人爲因素,而不是故意計劃支持在線程之間共享堆棧位置的程序。」 本文標題爲:「橡皮擦:多線程程序的動態數據競賽探測器」 我明白這個語句的內容,但我想知道是否可以共享堆棧位置? – Achilles 2010-06-01 13:30:24