Intrusive_ref_counterшаблон класса реализует счетчик ссылок для класса производного пользователя, который предназначен для использования сintrusive_ptr. Базовый класс ассоциировалintrusive_ptr_add_refиintrusive_ptr_releaseфункции, которые изменяют счетчик ссылок по мере необходимости и уничтожают объект пользователя, когда счетчик падает до нуля.
Шаблон класса параметризован попараметрам DerivedTиCounterPolicyT. Первым параметром является класс пользователя, который происходит отintrusive_ref_counter. Этот тип необходим для того, чтобы правильно уничтожить объект, когда на него не осталось ссылок.
Второй параметр — это политика, определяющая характер эталонного счетчика. Повышаю. SmartPtr предоставляет две такие политики:thread_unsafe_counterиthread_safe_counter. Первый предписывает базовому классуintrusive_ref_counterиспользовать счетчик, подходящий только для однопоточного использования. Указатели на один объект, который использует этот тип счетчика ссылок, не должны использоваться в разных потоках. Последняя политика делает эталонный счетчик потока безопасным, если целевая платформа не поддерживает резьбу. Поскольку в современных системах поддержка резьбы распространена, по умолчанию встречная политика являетсяthread_safe_counter.
Примечания:Ожидается, что указатель на построенный объект будет переданintrusive_ptrконструктору, оператору присвоения илиметоду сброса () [41), который увеличит счетчик отсчета.
Примечания:Ожидается, что указатель на построенный объект будет переданintrusive_ptrконструктору, оператору присвоения илиметоду сброса () [41), который увеличит счетчик отсчета.
Статья intrusive_ref_counter раздела может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.