Почему регистры процессора действуют как корни для сборщика мусора? Когда мутатор делает паузу, сборщик мусора может сканировать корни, содержимое переменных сбрасывается в память (используя забор памяти), поэтому регистры не содержат данных, которые не находятся в памяти... если мое понимание правильное...
Зачем вам нужно их сканировать? Я вижу это как избыточность...
Сброс в память - это деталь реализации. Важно то, что данные, содержащиеся в регистрах во время запуска цикла GC, рассматриваются как доступные, независимо от того, как и где эти данные хранятся в памяти в течение самого цикла GC.
std::atomic_thread_fence
перед приостановкой ... все ли значения регистров были сброшены в память послеstd::atomic_thread_fence
? Итак, если все сброшено в память (и при условии, что программист сам не изменит значения регистра), зачем мне читать регистры при сканировании корней?