【发布时间】:2011-01-09 06:32:34
【问题描述】:
我正在编写一个半准确的垃圾收集器,我想知道是否有一种方法可以准确地检测给定线程的系统分配堆栈的边界。
我需要这个,所以我可以扫描堆栈的根(指针),我目前的方法是在进入新线程和进入 main() 时保存堆栈指针,然后在每个线程再次保存它时使用全局锁启动垃圾回收。
(我知道从长远来看这种方法并不理想,因为它会导致不必要的锁定,但现在在基础知识成熟之前它是可以接受的)
但我真的很想有一种更“安全”的方式来检测边界,因为根很容易“逃脱”这种机制(取决于线程实现——pthreads 易于管理,但不是OpenMP 或 Grand Central Dispatch 也是如此)。
如果有一种可移植的方式来做到这一点,那就更棒了,但我不认为会是这样。我目前正在使用 Mac OS X 10.6,但欢迎任何平台的答案。
【问题讨论】:
标签: multithreading garbage-collection parallel-processing