Il mio no era riferito solo al Singleton, non a tutto il resto. Se esiste una funzione di creazione dei cataloghi, puoi e devi gestire il puntatore tramite uno shared_ptr.
Le risorse condivise di solito sono variabili globali o risorse del sistema (un file ad esempio), l'importante è fare in modo che solo un thread alla volta ci accedam altrimenti si ha una race condition.In questo caso come il progetto accede alle risorse condivise in ambito multithreading?
No, ci devi pensare tu.Ci pensa il sistema operativo che gestisce i thread?
Delle TBB ho usato solo la tbbmalloc.dll per avere le funzioni di gestione della memoria e creare un allocatore compatibile con STL. Tuttavia (da quel che so) i thread in TBB stanno dietro le quinte, non si gestiscono direttamente.
Boost ha la libreria che è stata adottata dal nuovo standard C++ e che prima o poi tutti i compilatori implementeranno.
Libri e documentazione sparsa ce n'è ma non so se sono a livello principiante.
http://oreilly.com/catalog/multithre...erpt/ch01.html
http://docs.sun.com/app/docs/doc/816-5137
http://en.wikipedia.org/wiki/Thread_...ter_science%29
Puoi cercare con multithreading programming, race condition, deadlock, mutex; materiale ne salta fuori.