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 :

Variables globales


Sujet :

C

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    382
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 382
    Par défaut Variables globales
    Bonjour a tous !!

    Je n'ai pas de probleme particulier (pour fois ! ;-) ), mais j'aimerais avoir votre avis.

    Je travail sur une IHM. Cette IHM dispose de thread et traite des paquets réseaux. Seulement voila, pour les threads comme pour certaines fonctions traitant ces paquets, il est difficile de passer des parametres en argument.

    Mon manque d'experience etant certainement en cause, j'ai tendance à utiliser des variables globales pour transferer mes informations d'une fonction a l'autre...

    Est ce une bonne methode ? ou est ce une catastrophe au niveau de la gestion de mon programme ??

    Quel est votre avis sur la question ??

    Merci !!

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

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Ben tu peux bien passer un argument à un thread.

    Les globales c'est mal.

    Si tu as besoin de passer plusieurs variables à un thread tu peux utiliser une structure et mettre ce dont tu as besoin dedans...

  3. #3
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Hé bien pour les threads en fait tu est je crois limité au passage d'un seul argument donc dans certains il est préférable d'utiliser des variables globales ou locales à un module de code entier uniquement d'où la possibilité de mettre en place des verrous pour les thread, pour justement les demandes d'accès concurencielles aux même variables (voir les mutex et même les conditions).

    [EDITHuum je suis encore en retard [/EDIT]
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  4. #4
    Expert confirmé
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Par défaut
    Salut !

    Le problème avec les variables globales, outre le fait qu'on puisse les modifier où les lires depuis n'importe quel segment de code, c'est qu'elles sont créées au début du programme, et ne seront pas détruites jusqu'à la fin, d'où, utilisation de mémoire accrue !

    Je ne vois pas exactement pourquoi tu dis que tu as un peu de mal à faire passer des variables en paramètres ?

    au pire, tu peux toujours faire une struct qui te permettra de faire communiquer avec les variables que t'as besoin de modifier et de faire passer un pointeur sur cette struct d'un thread à l'autre... enfin... ce que j'en dis

    Sinon, une chose est claire : évite au maximum les variables globales... Je ne pense pas qu'il existe vraiment de cas où elles soient réellement nécessaires
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag :resolu: (en bas)

  5. #5
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Dans le pire des cas, quelques chose d'assez propre, si tu peux te contenter d'une variable gloable à un seul module de code (donc privée) et des fonctions publiques permettant de la modifier et d'en lire le contenu, tout bêtement !
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    382
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 382
    Par défaut
    Merci pour tout ces commentaires !!

    Pour ma part, j'ai créé des listes chainées. Ceci permet de passer un pointeur sur l'une des structures lorsque je lance mon thread ou au moin un identifiant pour que le thread sache ou aller écrire.

    Mais cette liste chainée est qd meme globale, non ?? Je ne voyai pas comment faire autrement et a priori, tout fonctionne bien !! Mais j'aimerai éviter au maximum de me retrouver avec une usine a gaz !!

    Pour ce qui est des fonctions moins connues permettant le traitement des paquets réseaux, la fonction pcap_loop ne permet pas le passage d'argument.. La seule solution que j'ai trouvé a donc été de créer un pointeur en globale sur l'une des structures que je positionne au moment de lancer mon call_back.

    Bref, il est difficile de se passer des var globales.. Est ce vraiment tres mal ?? le dieu du C m'exclura t il du paradis des développeurs ??

    Tout ce que je peux dire pour ma defense, c'est que je débute !! lol

  7. #7
    Expert confirmé
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Par défaut
    non, la liste chainée n'a pas besoin d'être globale, ça peut être une variable comme une autre
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag :resolu: (en bas)

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par gdpasmini
    Je travail sur une IHM. Cette IHM dispose de thread et traite des paquets réseaux. Seulement voila, pour les threads comme pour certaines fonctions traitant ces paquets, il est difficile de passer des parametres en argument.
    Aucun problème. Il y a un paramètre pour ça...

    http://emmanuel-delahaye.developpez.com/pthreads.htm

Discussions similaires

  1. Variable globale / Propriété des threads
    Par rgarnier dans le forum XMLRAD
    Réponses: 4
    Dernier message: 03/10/2003, 10h49
  2. Cacher Variable Url avec Variable Globale
    Par danuz dans le forum XMLRAD
    Réponses: 6
    Dernier message: 26/09/2003, 17h20
  3. Variable "globale" (dans plusieurs templa
    Par mattmat dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 17/06/2003, 19h22
  4. question sur les variables globales et les thread posix
    Par souris_sonic dans le forum POSIX
    Réponses: 5
    Dernier message: 13/06/2003, 13h59
  5. les variables globales static
    Par gRRosminet dans le forum C
    Réponses: 8
    Dernier message: 27/04/2002, 08h34

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