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