Je songe à utiliser boost :: weak_ptr pour implémenter un pool d'objets tel qu'ils seront récoltés quand personne n'utilise l'un des objets. Ma préoccupation, cependant, est que c'est un environnement multithread, et il semble qu'il y ait une condition de concurrence entre le dernier shared_ptr à un objet qui sort de la portée et un nouveau shared_ptr construit à partir de weak_ptr. Normalement, vous protégez de telles opérations avec un verrou ou quelque chose comme ça; cependant, le point entier ici est que vous ne savez pas quand le shared_ptr pourrait être hors de portée. Ai-je mal compris quelque chose à propos de boost :: shared_ptr et boost :: weak_ptr? Si non, quelqu'un a-t-il de bonnes suggestions sur ce qu'il faut faire?Boost weak_ptr dans un programme multithread pour implémenter un pool de ressources
Merci.
Andrew
Je crois qu'il n'est pas nécessaire de tester si votre shared_ptr est valide ou non, car le constructeur va lancer des exceptions bad_weak_ptr si votre week_ptr pointe sur l'objet supprimé. Ou vous devriez utiliser weak_ptr :: lock() qui ne lance pas mais peut retourner un shared_ptr qui pointe vers NULL. –
Serge
Alors c'est atomique? La section sur la sécurité des threads dans la page de manuel laisse planer un doute dans mon esprit. –
@Serge: Merci! Je vais réparer mon message. –