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 :

Dll et multi threading


Sujet :

C

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2006
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Dll et multi threading
    Bonjour,

    J'ai lu bcp de doc sur le dll et le multi threading ...

    Il semble que lorsque plusieurs process accèdent à une fonction d'une Dll, il n'y aie pas de problème de concurrence car chaque process évolue dans son propre environement mémoire.

    Par contre, si un process lance plusieurs threads et que ces threads appellent une fonction d'une même Dll, j'aimerais savoir s'il faut que je gère la concurrence moi même ou pas ?

    Qu'en est-il pour les paramètres des fonctions, les variables locales et globales de cette Dll ? Je n'ai absolument pas envie de partager les données entre mes threads ... c'est plutôt le contraire.

    Merci

    Bruno

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 382
    Points : 41 588
    Points
    41 588
    Par défaut
    Ben, dans une DLL, c'est comme dans l'EXE : Tout est partagé entre tous les threads d'un process.
    - Variables globales : partagées entre tous les threads
    - Variables locales statiques : partagées entre tous les threads
    - Variables locales non-statiques et paramètres : Chaque thread à sa propre pile, mais un pointeur vers une variable locale (ou un paramètre) est valide partout (du moins, tant que la variable n'a pas été détruite).
    - Et bien entendu, le tas est partagé, un pointeur est donc valide partout.

    En théorie, à moins d'accès à des variables partagées (globales ou statiques), tu n'as pas besoin de gérer la concurrence toi-même.

  3. #3
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Citation Envoyé par Médinoc
    En théorie, à moins d'accès à des variables partagées (globales ou statiques)
    Ce qui, dans une DLL devrait être limité au minimum voir interdit.

    Jc

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 382
    Points : 41 588
    Points
    41 588
    Par défaut
    C'est à cela que sert le thread-local storage.
    Tout ce qu'il faut, c'est une variable globale process-wide pour conserver le N° de slot.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2006
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Merci beaucoup
    Merci,

    J'ai donc ma réponse, si mes variables sont non statiques et locales dans mes fonctions de ma Dll, je n'ai pas a gérer la concurrence entre mes threads !! Ouuuuf.

    Encore merci de ces réponses précieuses pour moi.


    Bruno

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. DLL Multi-Thread pour un programme en C
    Par TANITE dans le forum C#
    Réponses: 5
    Dernier message: 02/09/2013, 11h36
  2. Tri multi-threadé
    Par Tifauv' dans le forum C
    Réponses: 8
    Dernier message: 28/06/2007, 10h00
  3. Réponses: 15
    Dernier message: 07/07/2005, 12h05
  4. [VB6][active x] faire du multi-thread avec vb
    Par pecheur dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 20/05/2003, 13h01
  5. [Kylix] exception qtinft.dll et multi-threading
    Par leclaudio25 dans le forum EDI
    Réponses: 3
    Dernier message: 27/03/2003, 19h09

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