Biased Reference Counting разделяет счётчик ссылок на локальную часть потока-владельца и разделяемую часть. Владелец обновляет свою часть дешевле, а другие потоки используют атомарные операции.
Что такое Biased Reference Counting и как этот алгоритм защищает подсчёт ссылок в No-GIL среде?
Biased Reference Counting разделяет счётчик ссылок на локальную часть потока-владельца и разделяемую часть. Владелец обновляет свою часть дешевле, а другие потоки используют атомарные операции.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Biased Reference Counting разделяет счётчик ссылок на локальную часть потока-владельца и разделяемую часть. Владелец обновляет свою часть дешевле, а другие потоки используют атомарные операции.
Большинство объектов часто живут преимущественно в одном потоке, поэтому подход сокращает стоимость полной атомарности каждого incref/decref. Для совместного использования и освобождения предусмотрены состояния и процедура объединения счётчиков; нельзя просто освободить объект, когда локальная часть стала нулевой. Это один из механизмов free-threaded CPython вместе с другими изменениями управления памятью. Он защищает жизненный цикл объекта, но не делает произвольные операции над его содержимым потокобезопасными и не заменяет locks бизнес-логики.
Источник: peps.python.org.