В настоящее время я разрабатываю структуру объектов для игры, и самая естественная организация в моем случае стала деревом. Являясь отличным поклонником умных указателей, я использую shared_ptr
исключительно. Однако в этом случае детям в дереве потребуется доступ к нему родительским (пример - существа на карте должны иметь возможность доступа к картографическим данным - ergo данные своих родителей).
Направление владения - это, конечно, то, что карта принадлежит этим существам, поэтому держит с ними общие указатели. Чтобы получить доступ к данным карты изнутри существа, нам, однако, нужен указатель на родителя - способ умных указателей - использовать ссылку ergo a weak_ptr
.
Однако однажды я прочитал, что блокировка weak_ptr
- дорогостоящая операция - может быть, это не так, - но учитывая, что weak_ptr
будет заблокирован очень часто, я обеспокоен тем, что этот дизайн обречен низкая производительность.
Следовательно, вопрос:
Какова эффективность блокировки функции weak_ptr? Насколько это важно?