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

Réseau C Discussion :

partager une struct entre plusieurs fils


Sujet :

Réseau C

  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 52
    Points : 34
    Points
    34
    Par défaut partager une struct entre plusieurs fils
    bonjour, je fais un serveur/client tcp multiclient en faisant un fork() dans le serveur pour que chaque fils s'oocupe d'un client. Mon problème est que je voudrais que tous mes fils puissent modifier une meme struct. Où dois-je la creer? dans le serveur? car il me semble que si je la crée dans le serveur chaque fils aura une copie de cette variable et non une variable pour tous les fils????? merci

  2. #2
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    414
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 414
    Points : 354
    Points
    354
    Par défaut
    je connais pas trop ces histoires de processus,mais ne pourrais tu pas tout simplement leur passer l'adresse de la structure au lieu de la structure elle meme ??
    __________
    "Any sufficiently advanced technology is indistinguishable from magic" Arthur C. Clarke

  3. #3
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par kamouminator
    je connais pas trop ces histoires de processus,mais ne pourrais tu pas tout simplement leur passer l'adresse de la structure au lieu de la structure elle meme ??
    Justement, non. Un processus, c'est blindé. La mémoire de l'un n'est pas accessible à l'autre. C'est pas comme des threads d'un même processus qui partagent naturellement le même espace mémoire...

    Pour partager on utilise une zone mémoire spéciale prévue pour ça (Shared Memory) et les fonctions shm_*() qui vont avec.
    Pas de Wi-Fi à la maison : CPL

  4. #4
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Citation Envoyé par romainromain
    bonjour, je fais un serveur/client tcp multiclient en faisant un fork() dans le serveur pour que chaque fils s'oocupe d'un client. Mon problème est que je voudrais que tous mes fils puissent modifier une meme struct. Où dois-je la creer? dans le serveur? car il me semble que si je la crée dans le serveur chaque fils aura une copie de cette variable et non une variable pour tous les fils????? merci
    Si tu veux, utiliser une variable commune au père et aux fils, utilise les moyens mis à ta disposition.

    Segment de mémoire partagé
    Introduction à Silverlight 4 (new) ; Localisation d'une application Silverlight (new) ;
    Mon espace perso[/B]

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. Albert Einstein[/SIZE]

  5. #5
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par romainromain
    bonjour, je fais un serveur/client tcp multiclient en faisant un fork() dans le serveur pour que chaque fils s'oocupe d'un client. Mon problème est que je voudrais que tous mes fils puissent modifier une meme struct.
    Le mot magique est Shared Memory.

    Détails ici : http://www.developpez.net/forums/forumdisplay.php?f=17
    Pas de Wi-Fi à la maison : CPL

  6. #6
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Citation Envoyé par kamouminator
    je connais pas trop ces histoires de processus,mais ne pourrais tu pas tout simplement leur passer l'adresse de la structure au lieu de la structure elle meme ??
    Non, les fils auront une copie des variables du père, ils ne peuvent pas interagir avec son espace mémoire
    Introduction à Silverlight 4 (new) ; Localisation d'une application Silverlight (new) ;
    Mon espace perso[/B]

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. Albert Einstein[/SIZE]

  7. #7
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 52
    Points : 34
    Points
    34
    Par défaut
    ok merci

  8. #8
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par romainromain
    alors j'utilise shared memory ou pas désolé je connai pas bien le c ça fai que deux semaines que je regarde comment ca marche je connai juste le java alors....
    merci
    Trop de choses d'un coup, tu vas tout mélanger...

    Il faut apprendre séparément et dans l'ordre :

    • Le langage C standard (indépendant de la machine)
    • L'utilisation de Linux (console, système de fichier, droits, répertoires)
    • Le développement sous Linux (éditeur compilateur, makefile...)
    • La programmation système sous Linux (processus, mémoire partagée, tubes)
    • Les sockets

    Il faut environ un an (en FAC, c'est 2/3, niveau L1/L2). Si tu brûles les étapes, tu vas droit au mur.
    Pas de Wi-Fi à la maison : CPL

  9. #9
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 52
    Points : 34
    Points
    34
    Par défaut
    merci de tes conseil mais je suis en fac et j'ai pas le choix j'ai jamais fait de c juste 6mois de c++ et 6mois de linux voila mais j'ai un projet a faire et j'ai pas trop le choix........ merci qd meme

Discussions similaires

  1. Partager une variable entre plusieurs classes
    Par jasonpolakow dans le forum Windows Forms
    Réponses: 8
    Dernier message: 06/01/2011, 10h02
  2. partage d'une variable entre plusieurs threads
    Par baedal dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 27/02/2008, 20h33
  3. Réponses: 12
    Dernier message: 14/08/2006, 12h55
  4. Réponses: 5
    Dernier message: 25/04/2006, 14h13
  5. Partager une version entre plusieurs DLL
    Par barthelv dans le forum MFC
    Réponses: 4
    Dernier message: 22/11/2005, 10h25

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