#1 Le 22/10/2011, à 17:47
- ehmicky
[C++]Synchronisation de threads, sans utiliser de mutexs globaux
Salut à tous,
J'aimerais exécuter plusieurs threads partageant une même ressource, mais je n'aime pas vraiment l'idée d'utiliser des objets globaux. J'aimerais donc éviter d'utiliser des mutexs globaux, pour que tout fait localement, selon une portée précise.
J'ai pensé donc à créer le mutex localement (en même temps que la ressource, en fait un membre de cette dernière) et à les passer par référence aux threads lancés via boost::ref et boost::bind :
#include <boost/thread/thread.hpp>
#include <boost/thread/locks.hpp>
#include <boost/thread/mutex.hpp>
#include <boost/function.hpp>
#include <boost/bind.hpp>
class MyResource
{
typedef boost::mutex MutexType;
MutexType Mutex;
... Resource;
public:
void UseResource( int )
{
boost::lock_guard<MutexType> Locker( Mutex );
... Utilisation de Resource ...
}
};
int main(void)
{
MyResource MyResourceVar;
boost::function<void( int )> Functor( boost::bind( &MyResource::UseResource, boost::ref( MyResourceVar ), _1 ) );
boost::thread_group ThreadGroup;
for ( int Count = 0 ; Count < 10 ; Count++ )
ThreadGroup.add_thread( new boost::thread( boost::ref( Functor ), Count ) );
ThreadGroup.join_all();
return 0;
}
J'aimerais savoir s'il s'agit d'une bonne approche (thread-safe, et bon design), ou s'il existe une meilleure manière de procéder. Merci
Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?
Hors ligne
#2 Le 03/11/2011, à 19:22
- ehmicky
Re : [C++]Synchronisation de threads, sans utiliser de mutexs globaux
up
Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?
Hors ligne
#3 Le 04/11/2011, à 16:14
- Luc Hermitte
Re : [C++]Synchronisation de threads, sans utiliser de mutexs globaux
Quand on peut, on évite de partager.
Je t'invite à consulter les moult articles d'Herb Sutter sur le MT. Ils sont visibles depuis son blog, et dispos sur le DDJ
Hors ligne