Aumente o valor de fraco_ptr em um programa multithread para implementar um pool de recursos

Estou pensando em usar o boost :: weak_ptr para implementar um pool de objetos para que sejam colhidos quando ninguém estiver usando um dos objetos. Minha preocupação, no entanto, é que seja um ambiente multiencadeado, e parece que há uma condição de corrida entre o último shared_ptr para um objeto fora do escopo e um novo shared_ptr sendo construído a partir do weak_ptr. Normalmente, você protegeria essas operações com trava ou algo assim; no entanto, o ponto principal aqui é que você não sabe quando o shared_ptr pode estar fora do escopo.

Estou entendendo mal algo sobre boost :: shared_ptr e boost :: weak_ptr? Caso contrário, alguém tem boas sugestões sobre o que fazer?

Obrigado.

Andrew

questionAnswers(3)

yourAnswerToTheQuestion