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

Langage Delphi Discussion :

[Delphi 6] Problème de section critique


Sujet :

Langage Delphi

  1. #1
    Membre du Club
    Inscrit en
    Mai 2003
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 81
    Points : 50
    Points
    50
    Par défaut [Delphi 6] Problème de section critique
    Bonjour,

    Je souhaite protéger une zone de mémoire partagée.

    J'ai donc placé dans cette zone une variable de type TRTLCriticalSection.

    Cette variable est initialisé une seule fois (InitializeCriticalSection).

    Ensuite des fonctions de différents programmes accèdent à la zone de mémoire partagée. Mais avant de lire ou d'écrire des données ils entrent dans une section critique (EnterCriticalSection) puis en sortent (LeaveCriticalSection). J'ai pensé qu'en mettant la variable de section critique dans la zone partagée c'était une bonne idée mais j'ai des plantages.

    Merci d'avance.

    Sinon je suis ouvert aux autres méthodes pour protéger de la mémoire partagée.

  2. #2
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 771
    Points
    2 771
    Par défaut Re: [DELPHI6] et Section critique
    Citation Envoyé par Desraux
    Ensuite des fonctions de différents programmes accèdent à la zone de mémoire partagée
    que veux tu dire par différent prog??? ou thréad dans un seul prog???
    PAS DE DESTIN, C'EST CE QUE NOUS FAISONS

  3. #3
    Membre du Club
    Inscrit en
    Mai 2003
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 81
    Points : 50
    Points
    50
    Par défaut
    non pas plusieurs threads mais plusieurs programmes.
    (C'est peut-être là que je me trompe quant à l'utilisation des sections critiques).

  4. #4
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 771
    Points
    2 771
    Par défaut
    une question, comment tu peut partager de la memoir entre des programme ??
    PAS DE DESTIN, C'EST CE QUE NOUS FAISONS

  5. #5
    DMO
    DMO est déconnecté
    Membre averti
    Avatar de DMO
    Profil pro
    Inscrit en
    Février 2004
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 290
    Points : 343
    Points
    343
    Par défaut
    Pour le partage de données entre threads (accès aux mêmes données depuis des threads différents), je préconise TMultiReadExclusiveWriteSynchronizer, qui est simple d'utilisation (ça encapsule un critical section).

    Pour le partage de données entre une appli et une dll par exemple, il faut regarder du côté de CreateFileMapping, MapViewOfFile, etc...
    Tu trouras des ressources là dessus sur DVP ici ou ailleurs.
    « La simplicité est la sophistication suprême » (Léonard de Vinci)

  6. #6
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Pour ne permettre l'acces aux données partagées en mémoire avec CreateFileMapping, MapViewOfFile, etc... , que par un seul programme, tu peux rajouter ce que l'on appelle un Mutex ou bien un sémaphore.

    Il y a plein d'aide là dessus sur internet, par exemple pour empecher un logiciel d'etre exécuté plus d'une fois sur une machine (une seule instance)

    sinon, regarde aussi du coté de l'objet TEvent (aide Delphi), qui permet de bloquer et proteger des objets partagés en mémoire.

    Avec tout ça tu devrais trouver l'inspiration et t'en sortir !
    Bidouilleuse Delphi

  7. #7
    DMO
    DMO est déconnecté
    Membre averti
    Avatar de DMO
    Profil pro
    Inscrit en
    Février 2004
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 290
    Points : 343
    Points
    343
    Par défaut
    Pour ce qui est de la synchronisation des threads (uniquement), en effet, TEvent est tout indiqué.
    « La simplicité est la sophistication suprême » (Léonard de Vinci)

  8. #8
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Citation Envoyé par DMO
    Pour ce qui est de la synchronisation des threads (uniquement), en effet, TEvent est tout indiqué.
    Non, ça marche aussi entre les Applications différentes !!!

    Regardes dans l'aide Delphi
    Bidouilleuse Delphi

  9. #9
    DMO
    DMO est déconnecté
    Membre averti
    Avatar de DMO
    Profil pro
    Inscrit en
    Février 2004
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 290
    Points : 343
    Points
    343
    Par défaut
    Citation Envoyé par waskol
    Non, ça marche aussi entre les Applications différentes !!!
    Oui waskol, mais ce que je souhaitais illuster avec mon "(uniquement)", c'est que TEvent sert à la synchronisation et non au partage de données (le thème de ce fil). C'est tout. Ceci dit merci, tu as bien fait de me reprendre : au moins c'est plus clair.
    « La simplicité est la sophistication suprême » (Léonard de Vinci)

Discussions similaires

  1. Problème avec les Threads et Section critique
    Par Devildz dans le forum Débuter
    Réponses: 1
    Dernier message: 25/11/2014, 21h51
  2. problème de section critique
    Par aemag dans le forum Oracle
    Réponses: 2
    Dernier message: 08/02/2007, 17h45
  3. Problème d'include avec une section critique.
    Par radicalrider dans le forum Visual C++
    Réponses: 21
    Dernier message: 12/07/2006, 15h38
  4. [Rave report 5.1.3][delphi 7] Probléme variable PIVar
    Par GILLESKLEIN dans le forum Rave
    Réponses: 2
    Dernier message: 05/02/2005, 15h27
  5. [Oracle][Delphi 7] Problème type de champ
    Par tiennos dans le forum Bases de données
    Réponses: 3
    Dernier message: 16/07/2004, 10h17

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