ponteiros compartilhados, fracos e preguiçosos em C ++
Alguém está ciente de uma implementação deshared_ptr
eweak_ptr
junto com um parceiro de inicialização lento? Os requisitos das classes eram:
A lazy_ptr
classe que permite que um cliente construa o objeto posteriormente (se houver), sem precisar da implementação do construto
A weak_lazy_ptr
classe que possui três estados possíveis: ainda não construído (não será bloqueado para umshared_ptr
), construído (será bloqueado para umshared_ptr
) e destruído (não será bloqueado para umshared_ptr
)
Criei algumas classes que não faziam o trabalho completamente há um tempo atrás eja o artigo CVu aqui) que usaramshared_ptr
eweak_ptr
em sua implementação. Os principais problemas de um modelo que usa ponteiros compartilhados e fracos em vez de se integrar a eles são os seguintes:
Uma vez que todoslazy_ptr
bjetos fora do escopo, quaisquer referências fracas não podem mais ser bloqueadas, mesmo se outros clientes estiverem mantendoshared_ptr
versões
A construção de objetos em diferentes threads não pode ser controlada
Agradeço qualquer indicação de outras tentativas de conciliar esses problemas ou de qualquer trabalho em andamento que possa haver nessa áre