IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Singleton et multithreading


Sujet :

C++

  1. #1
    Alp
    Alp est d�connect�
    Expert confirm�

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 36
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par d�faut Singleton et multithreading
    Salut,

    Apr�s une recherche sur le forum, sans succ�s, je viens donc vous poser ma petite question.

    Le contexte :
    Je vais d�velopper un serveur. Je pensais � faire un thread par client, sachant qu'il n'y aura qu'entre 2 et 8 clients environ.
    Alors les clients int�ragiront avec le serveur, et enverront des commandes qui entraineront que mon serveur modifiera une variable chez lui. Cette variable est un singleton.
    Or, comme les int�ractions risquent d'�tre fr�quentes(en effet, je pense environ � 2 requ�tes par client par seconde, et ce pendant qqlq minutes(je prends de la marge), les mutex seraient probablement trop couteux et ralentiraient le tout, ce qui annulerait l'int�r�t d'utiliser les thread ... ca reviendrait presque � traiter les clients it�rativement dans un while, du point de vue lenteur.
    Alors, ma question est :
    Sachant que je vais probablement utiliser la m�thode du double-check pour l'instanciation, je ne sais pas cependant comment faire pour que, lorsqu'un thread modifie la variable singleton, un autre ne la modifie pas en meme temps, ou presque, ce qui entrainerait un probl�me du genre une seule modification faite sur les 2 demand�es, etc ... ?

    Merci d'avance

  2. #2
    R�dacteur

    Avatar de Matthieu Brucher
    Profil pro
    D�veloppeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    D�tails du profil
    Informations personnelles :
    �ge : 43
    Localisation : France, Pyr�n�es Atlantiques (Aquitaine)

    Informations professionnelles :
    Activit� : D�veloppeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par d�faut
    Pour la r�cup�ration du singleton, le double-check est pratique, mais pas encore l'ultime. Pour la modification du singleton, ce n'est pas ce syst�me qui te prot�gera, c'est � toi de prot�ger les routines critiques.

  3. #3
    Alp
    Alp est d�connect�
    Expert confirm�

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 36
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par d�faut
    Comment les prot�ger, sans mutex?

  4. #4
    R�dacteur

    Avatar de Matthieu Brucher
    Profil pro
    D�veloppeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    D�tails du profil
    Informations personnelles :
    �ge : 43
    Localisation : France, Pyr�n�es Atlantiques (Aquitaine)

    Informations professionnelles :
    Activit� : D�veloppeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par d�faut
    Avec des sections critiques, c'est plus l�ger, ou parfois des op�rations atomiques si le compilateur y donne acc�s.

  5. #5
    Alp
    Alp est d�connect�
    Expert confirm�

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 36
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par d�faut
    Pour les sections critiques j'ai vu que l'api WIN32 fournit des fonctions.
    Cependant, en vue d'une portabilit�(au moins Windows/Unix), j'aimerais savoir s'il y a des libs qui fournissent ceci en "portable"?
    Boost::thread fournit des outils pour des sections critiques ou op�rations atomiques?
    A propos, que sont les op�rations atomiques et comment les r�aliser?

  6. #6
    R�dacteur

    Avatar de Matthieu Brucher
    Profil pro
    D�veloppeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    D�tails du profil
    Informations personnelles :
    �ge : 43
    Localisation : France, Pyr�n�es Atlantiques (Aquitaine)

    Informations professionnelles :
    Activit� : D�veloppeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par d�faut
    Boost.Threads ne propose rien � ce niveau, elle est encore trop jeune, je pense, pour proposer suffisemment de fonctions pour le travail de tous les jours en multithreads.
    Les op�rations atomiques sont des op�rations que le processeur ex�cute en une seule fois, par exemple incr�mentation et test. S'il ne les propose pas, on ne peut pas en cr�er. Dans Qt, ils ont un header sp�cial pour ces choses - qatomic.h -

  7. #7
    Alp
    Alp est d�connect�
    Expert confirm�

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 36
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par d�faut
    Et donc niveau librairies portables proposant ce qu'il faut pour cr��r des sections critiques, qu'est-ce qu'on trouve?(si �a existe)

  8. #8
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    D�tails du profil
    Informations personnelles :
    �ge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par d�faut
    Une question b�te : les sections critiques, elles sont pas prot�g�es avec des mutex ?

  9. #9
    Alp
    Alp est d�connect�
    Expert confirm�

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 36
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par d�faut
    Tr�s pertinente la question Aucune id�e.

  10. #10
    R�dacteur

    Avatar de Matthieu Brucher
    Profil pro
    D�veloppeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    D�tails du profil
    Informations personnelles :
    �ge : 43
    Localisation : France, Pyr�n�es Atlantiques (Aquitaine)

    Informations professionnelles :
    Activit� : D�veloppeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par d�faut
    Citation Envoy� par Eusebe
    Une question b�te : les sections critiques, elles sont pas prot�g�es avec des mutex ?
    Non, ce sont des objets _normalement_ plus l�gers, du moins pour autant que je sache !
    Des biblioth�ques pour les sections critiques, je ne sais pas. Par exemple, je ne sais m�me pas si Linux en propose, je suppose que oui, mais je n'ai pas encore �t� confront� au fait.

  11. #11
    R�dacteur/Mod�rateur
    Avatar de JolyLoic
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    5 463
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 51
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 5 463
    Par d�faut
    Une section critique, c'est du pur windows, c'est comme un mutex en plus l�ger, mais �a ne permet pas de lock inter process.

    Dans ton cas, une vingtaine de lock par seconde, je ne pense pas qu'il y ait de probl�mes quelque soit la primitive de synchro utilis�e.

    Les m�canismes de "double check", je m'en m�fie comme de la peste, la plupart ne fonctionnent pas...
    Ma session aux Microsoft TechDays 2013 : D�velopper en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage � la d�couverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'h�sitez pas � me contacter.

  12. #12
    R�dacteur

    Avatar de Matthieu Brucher
    Profil pro
    D�veloppeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    D�tails du profil
    Informations personnelles :
    �ge : 43
    Localisation : France, Pyr�n�es Atlantiques (Aquitaine)

    Informations professionnelles :
    Activit� : D�veloppeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par d�faut
    Bon, ben pour les sections critiques, c'est r�solu

  13. #13
    Expert confirm�
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    D�cembre 2003
    Messages
    3 549
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 3 549
    Par d�faut
    Il doit y avoir quelque chose sur le sujet dans Loki.

  14. #14
    Alp
    Alp est d�connect�
    Expert confirm�

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 36
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par d�faut
    Je viens d'aller voir Loki.
    En effet, et �a utilise des mutex, et apparemment ce sont bien des mutex que je vais utiliser.
    Ca suffira vous pensez? Apr�s tout ca doit �tre bien fait les mutex... Pas si lent que �a.

    Donc, pour clore le sujet, je pense que je vais utiliser Boost.Thread... Vous avez mieux?

  15. #15
    R�dacteur

    Avatar de Matthieu Brucher
    Profil pro
    D�veloppeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    D�tails du profil
    Informations personnelles :
    �ge : 43
    Localisation : France, Pyr�n�es Atlantiques (Aquitaine)

    Informations professionnelles :
    Activit� : D�veloppeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par d�faut
    C'est vrai que Loki propose des outils mieux adapt�s pour les synchronisations !

  16. #16
    Alp
    Alp est d�connect�
    Expert confirm�

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 36
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par d�faut
    Ah? en quoi ils sont mieux adapt�s?
    C'est plus l�ger et plus rapide?

  17. #17
    Expert confirm�
    Avatar de Luc Hermitte
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2003
    Messages
    5 296
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : A�ronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Ao�t 2003
    Messages : 5 296
    Par d�faut
    La r�f�rence, en mati�re d'articles et plus, c'est ACE. Tu y trouveras tout ce dont tu as besoin pour faire du r�seau TR de fa�on portable. C'est surtout que la partie r�seau et la partie thread ont �t� con�ues pour travailler main dans la main. La doc est un peu chaude, de m�me que les articles (qui sont ultra sp�cialis�s), mais il existe un tr�s bon tutoriel dont j'avais d�j� donn� l'adresse ici-m�me.
    On peut critiquer le poids du bestio.

    Quand au double check, il fonctionne mal et ne sert pour pour la cr�ation de ton objet.
    Tu as plus vite fais d'avoir une fonction create(Params) dans ton singleton. fonction que tu appeleras dans le thread de d�marrage de l'appli. Et une fonction instance() qui renvoie ton singleton. Apr�s, suivant les besoins, tu peux avoir un mutex dans instance(), ou des mutex/locks qui distinguent les modes �crivains/lecteurs dans chacune des fonctions de ton singleton. A voir en fonction des r�les � remplir.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne r�ponds � aucune question technique par le biais de ce m�dia. Et de toutes fa�ons, ma BAL sur dvpz est pleine...

  18. #18
    Alp
    Alp est d�connect�
    Expert confirm�

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 36
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par d�faut
    Ok, merci beaucoup � tous, �a devrait aller l�

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Singleton et multithreading
    Par alladdin dans le forum Langage
    R�ponses: 8
    Dernier message: 29/07/2010, 23h31
  2. Singleton et multithread
    Par totoche dans le forum Servlets/JSP
    R�ponses: 2
    Dernier message: 25/05/2010, 18h05
  3. [Singleton] singleton et multithreading
    Par behess dans le forum Design Patterns
    R�ponses: 17
    Dernier message: 24/09/2009, 18h33
  4. Singleton et Multithreading
    Par behess dans le forum C#
    R�ponses: 22
    Dernier message: 09/09/2009, 11h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo