
Hi, I've got some objects which are stored in a DB that are being used in a multi-threaded application. I'm trying to avoid loading the same object from the db and would like the added bonus of changes made by one thread being instantly available to all others (with suitable mutex protection provided during a change but they are predominantly read-only) I've decided that shared_ptrs fit the bill and the following code will do the job but, never having used them before I was hoping some one could have a look to make sure I'm not mis-understanding the reason for shared_ptrs or missing a simpler method to achieve the same results. Thanks in advance, Patrick class dummy { public: dummy( std::string& id ) : m_id( id ){/*load the object from db*/} virtual ~dummy(){} const std::string& objectid(){ return m_id; } private: std::string m_id; }; typedef boost::shared_ptr<dummy> ListObjectSharedPtr; dummy& getOrLoadObject( std::string &id )//should I be returning a ref? { static std::list<ListObjectSharedPtr> objectlist; for( std::list<ListObjectSharedPtr>::iterator it = objectlist.begin(); it != objectlist.end(); ++it ) { if( it->get()->objectid() == id ) return *it->get(); if( it->use_count() == 0 )//should this be == 1 as the object in //the list is always present? { objectlist.erase( it ); --it; } } ListObjectSharedPtr lo( new dummy( id ) ); objectlist.push_back( lo ); return *objectlist.back().get(); } ****************************************************************************** "This message and any attachments are solely for the intended recipient and may contain confidential and privileged information. If you are not the intended recipient, any disclosure, copying, use, or distribution of the information included in this message and any attachments is prohibited. If you have received this communication in error, please notify us by reply e-mail and immediately and permanently delete this message and any attachments. Thank you." Interactive Transaction Solutions Ltd (2473364 England) Registered Office: Systems House, Station Approach Emsworth PO10 7PW ********************************************************************** Ce message �lectronique contient des informations confidentielles � l'usage unique des destinataires indiqu�s, personnes physiques ou morales. Si vous n'�tes pas le destinataire voulu, toute divulgation, copie, ou diffusion ou toute autre utilisation de ces informations, est interdite. Si vous avez re�u ce message �lectronique par erreur, nous vous remercions d'en avertir son exp�diteur imm�diatement par email et de d�truire ce message ainsi que les �l�ments attach�s. Interactive transaction Solutions SAS- France (RCS Pontoise : 489 397 877) Si�ge social : Parc Saint Christophe, 10, Avenue de l�Entreprise 95865 Cergy-Pontoise Cedex ______________________________________________________________________ This email has been scanned by the MessageLabs Email Security System. For more information please visit http://www.messagelabs.com/email ______________________________________________________________________