Я пишу полуточный сборщик мусора, и мне интересно, есть ли способ точно определить границы стека, выделенного системой для данного потока.
Мне нужно это такЯ могу просканировать стек на наличие корней (указателей), и мой текущий подход заключается в том, чтобы сохранить указатель стека при входе в новый поток и при входе в main (), а затем снова сохранить его для каждого потока при запуске сборки мусора, используяглобальная блокировка.
(я знаю, что этот подход не идеален в долгосрочной перспективе, так как он вызывает ненужную блокировку, но сейчас он приемлем, пока не исчерпаны основы)очень хотелось бы иметь более «безопасный» способ определения границ, потому что корням очень легко «избежать» этого механизма (в зависимости от реализации потока - управление pthreads легко, но не так с OpenMP или Grand CentralОтправка).
Было бы еще лучше, если бы был портативный способ сделать это, но я не ожидаю, что это будетон случай.В настоящее время я работаю на Mac OS X 10.6, но ответы для любой платформы приветствуются.