Кто-нибудь знает о реализации shared_ptr
и weak_ptr
вместе с ленивым партнером по инициализации? Требованиями классов были:
-
A
lazy_ptr
класс, который позволяет клиенту построить объект позже (если вообще), без необходимости реализации конструктора -
A
weak_lazy_ptr
класс, который имеет три возможных состояния: еще не сконструирован (не будет привязан кshared_ptr
), сконструирован (будет заблокирован доshared_ptr
) и уничтожен (не будет блокироваться ashared_ptr
)
Я создал несколько классов, которые совсем недавно не выполняли работу (см. статью CVu здесь), в которой использовались shared_ptr
и weak_ptr
в их реализации. Основные проблемы с моделью, в которой используются общие и слабые указатели USES, а не интеграция с ними:
-
Как только все объекты
lazy_ptr
выходят из области видимости, любые слабые ссылки больше не могут быть заблокированы, даже если другие клиенты держатshared_ptr
версии -
Невозможно управлять конструкцией объектов на разных потоках.
Я был бы признателен за любые указания на другие попытки согласования этих проблем или с любой текущей работой, которая может быть в этой области.