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