общие, слабые и ленивые указатели в C ++

Кто-нибудь знает о реализации shared_ptr и weak_ptr вместе с ленивым партнером по инициализации? К классам предъявлялись следующие требования:

  • Класс lazy_ptr , который позволяет клиенту создавать объект позже (если вообще), без необходимости реализации конструктора

  • A weak_lazy_ptr класс, который имеет три возможных состояния: еще не создан (не будет привязан к shared_ptr ), создан (будет привязан к shared_ptr ) и уничтожен (не будет привязан к shared_ptr )

Некоторое время назад я создал несколько классов, которые не выполняли свою работу полностью ( см. Статью CVu здесь ), которые использовали shared_ptr и weak_ptr в их реализации. Основные проблемы с моделью, которая ИСПОЛЬЗУЕТ общие и слабые указатели вместо интеграции с ними, следующие:

  1. Когда все объекты lazy_ptr выходят из области видимости, любые слабые ссылки больше не могут быть заблокированы, даже если другие клиенты содержат shared_ptr версий

  2. Невозможно контролировать построение объектов в разных потоках

Я был бы признателен за любые указатели на другие попытки решить эти проблемы или на любую незавершенную работу, которая может быть в этой области.

13
задан Rob 1 January 2012 в 19:49
поделиться