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 :

[Thread] FreeOnTerminate : Liberation Variable ?


Sujet :

Langage Delphi

  1. #1
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut [Thread] FreeOnTerminate : Liberation Variable ?
    Est ce que si on fait appel a "FreeOnTerminate", la variable qui contient l'instance d'une classe derivé de TThread est libéré (ie Free ou FreeAndNil) ou bien elle existe toujours en memoire mais le thread est inactif ?

    En gros : Peut on faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Begin
    TMyThread.Create(...);
    End;
    Ou on va se retrouver face a une fuite memoire ?
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  2. #2
    Membre expérimenté
    Avatar de Bloon
    Homme Profil pro
    Consultant Freelance
    Inscrit en
    Avril 2002
    Messages
    467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant Freelance
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2002
    Messages : 467
    Points : 1 339
    Points
    1 339
    Par défaut
    Le plus simple pour tester ce genre de chose, c'est de mettre un destructeur avec un point d'arrêt et de voir si le programme passe dedans.

    Pour répondre à ta question : oui, on peut, si FreeOnTerminate est à true.

    Bloon
    A lire : Les règles du club
    Delphi : La FAQ - Articles

  3. #3
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Pas bete l'idee du destructeur ....

    Moi je suis passé apr un simple bouton qui teste avec Assigned si la variable esttoujours assigné : Echec.
    Je peut encore manipuler des variables sans qu'il rale ....
    Mais un resume entraine une erreur.
    Alors c'etait pas clair comme tests :p

    MErci ^^
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  4. #4
    Membre éprouvé
    Avatar de octal
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    441
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 441
    Points : 957
    Points
    957
    Par défaut
    aide de Delphi :
    Détermine si l'objet thread est automatiquement détruit lorsque le thread s'achève.

    Syntaxe Delphi :

    property FreeOnTerminate: Boolean;

    Syntaxe C++ :

    __property bool FreeOnTerminate = {read=FFreeOnTerminate, write=FFreeOnTerminate, nodefault};

    Description

    Affectez la valeur true à FreeOnTerminate si vous ne voulez pas détruire explicitement des threads après qu'ils ont achevé leur exécution. Quand FreeOnTerminate a la valeur false, l'objet thread doit être explicitement détruit dans le code de l'application.
    Quand vous mettez FreeOnTerminate à TRUE l'objet thread en question est LIBERE donc pas besoin de le libérer manuellement avec Free. Par contre il n'est pas mis systematiquement à NIL.
    Dans le cas où dans ton thread tu utilise des objets (comme variable membre) sache que tu peux les detruire dans l'evenement OnTerminate qui s'execute juste avant l'appel au destructeur de cette manière là tu sera sûr de nettoyer la mémoire convenablement quand ton objet thread est sur FreeOnTerminate à True
    http://www.pocketmt.com GLCD Font Creator home site.

  5. #5
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Oki ... merci de cette precision. Il est vrai que j'ai ete perturé par la non presence du nil dans la var de type Thread.
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

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

Discussions similaires

  1. [Python2.7][Thread]Passage de variable
    Par cameleon2002 dans le forum Général Python
    Réponses: 6
    Dernier message: 27/11/2014, 20h21
  2. Aide threads, mutex et variables de conditions
    Par paladice dans le forum C
    Réponses: 1
    Dernier message: 25/04/2011, 00h27
  3. [thread]récupération de variable
    Par Zay dans le forum Concurrence et multi-thread
    Réponses: 1
    Dernier message: 10/04/2007, 02h04
  4. [Thread] Passer une variable
    Par PoZZyX dans le forum Java ME
    Réponses: 8
    Dernier message: 07/07/2006, 13h45
  5. 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

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