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

Threads & Processus C++ Discussion :

Implémentation pthread_create() et ainsi de suite


Sujet :

Threads & Processus C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Array
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    210
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 210
    Par défaut Implémentation pthread_create() et ainsi de suite
    Bonjour,

    Je fais en ce moment un programme qui agit ainsi:
    1- Un client se connecte
    2- Le processus verifie si le client a un identifiant (une sorte de "serial number")
    3- S'il n'en a pas, le serveur ouvre un thread en mode "detached"
    4- Ledit thread communique avec un autre serveur, au moyen de sockets, afin de récupérer un nouveau id qui est *unique*
    5- Le thread se termine ensuite en enregistrant le id sur le client
    6- Pendant ce temps, la routine de connexion s'est continuée juste après avoir créé le thread

    Voilà...
    Je me demande, est-ce que c'est bien de créer un nouveau thread à chaque fois qu'un client se connecte (un maximum de 64 clients peuvent être connectés en même temps), ou est-ce que je devrais avoir un unique thread avec une "file d'attente" (un tableau) dans lequel je stocke le "client_id" (le client id est différent de l'unique id en question, c'est juste un numéro de client allant de 1 à CLIENT_MAX, qui vaut ici 64), puis envoyer un message à cet unique thread comme de quoi la file d'attente a changée?

    J'aimerais que vous me conseillez. Une chose est sure... il est important que la routine de connexion n'attende pas la réponse du serveur fournissant les serial numbers... vous comprenez!

    Merci beaucoup!

    Cordialement,
    Array

  2. #2
    Membre très actif
    Profil pro
    professeur des universités à la retraite
    Inscrit en
    Août 2008
    Messages
    364
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : professeur des universités à la retraite

    Informations forums :
    Inscription : Août 2008
    Messages : 364
    Par défaut
    A noter en tout cas qu'à la place du pthread_create() tu peux utiliser les nouvelles fonctionnalités du C++11 :
    http://www.justsoftwaresolutions.co....g-threads.html

  3. #3
    Membre Expert Avatar de Trademark
    Profil pro
    Inscrit en
    Février 2009
    Messages
    762
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 762
    Par défaut
    Salut,

    Citation Envoyé par Array Voir le message
    est-ce que c'est bien de créer un nouveau thread à chaque fois qu'un client se connecte
    Non ce n'est pas "bien", soit tu n'utilises qu'un thread avec un select (ou équivalent), soit tu utilises un pool de thread, c'est-à-dire N threads créés à l'avance (du coup il n'y a pas le coût de la destruction et construction de ces threads, sauf au départ et à la fin).

    Il faut que tu fasses attention que ces N threads ne soient jamais bloqué par un client. Pour ce faire, tu peux plutôt considérer que les threads gèrent des tâches plutôt que des clients.

  4. #4
    Membre confirmé Avatar de Array
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    210
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 210
    Par défaut
    Merci beaucoup Trademark.

    Je voudrais seulement aller un peu plus loin... pourquoi est-ce que c'est déconseillé de procéder ainsi... je veux dire, si je crée mes threads en mode détaché et que j'en crée un à chaque fois qu'un client se connecte, le thread finira par lui même et la mémoire sera libérée non?

    Est-ce à cause que la création d'un thread demande trop de CPU?
    Est-ce parce qu'il y a un nombre limités de threads que le processeur peut gérer?

    Aussi, peu tu me dire...
    soit tu n'utilises qu'un thread avec un select
    Qu'est-ce que cela veut dire?
    EDIT: Oh select()... tu veux dire pour les descrpteurs de fichiers?

    Pour être honnête je crois qu'un seul thread suffirait. Le plus important est que la routine de connexion ne soit pas bloquée par l'attente de la communication au server de serials... on peut avoir un certain délai, raisonnable, avant qu'on assigne le serial à l'utilisateur.

    Merci!

Discussions similaires

  1. Implémenter un lien "Lire la suite"
    Par CinePhil dans le forum jQuery
    Réponses: 7
    Dernier message: 14/06/2013, 01h06
  2. Réponses: 2
    Dernier message: 02/09/2012, 19h54
  3. Pb BDE suite a passage en Windows 2000 pro
    Par ARIF dans le forum Paradox
    Réponses: 4
    Dernier message: 18/11/2002, 11h39
  4. Réponses: 2
    Dernier message: 06/07/2002, 12h36
  5. Implémentation des fonctions mathématiques
    Par mat.M dans le forum Mathématiques
    Réponses: 9
    Dernier message: 17/06/2002, 16h19

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