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++Builder Discussion :

fonction Synchronize


Sujet :

C++Builder

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre �m�rite
    Avatar de bandit boy
    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    916
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 916
    Par d�faut fonction Synchronize
    Bonjour,
    Lorsque mon application est en fonctionnement, l'UC tourne � 50% sur un PC fixe et 100 % sur un protable. J'ai d'abord pens� � un probl�me de Timer qui se lance tout le temps. Mais m�me sans les Timers, je retrouve ce probl�me.


    J'ai tour� le probl�me, il �tait d�e � un thread permettant l'affichage qui tournait en permanence. J'ai d�cid� d'utiliser la m�thode Synchronize, mais lorsque je la d�clare, je ne la trouve nulle part.

    Donc j'ai une erreur fonction undeclared et lorsque j'effectue une recherche sur mon PC, je ne la trouve pas. J'ai CheckSynchronize, mais pas de synchronize.

    Je continue mes recherches, cependant si quelqun � d�j� �t� confront� � ce probl�me, je suis curieux de savoir comment il l'a r�solu.
    Merci d'avance

    Voici le liens vers la m�thode expliqu�e
    http://chgi.developpez.com/thread/

  2. #2
    Membre �m�rite
    Avatar de bandit boy
    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    916
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 916
    Par d�faut
    J'ai r�ussi � trouver mon erreur, mais je n'arrive pas au r�sultats voulu.
    Dans une boucle for, je charge un TChart, mais aussi j'affiche sa progression dans une progress bar et je donne sont pourcentage dans un item d'une status bar.

    Le hic est que la boucle for ne permet pas l'affichage, l'OS �tant bloqu� le temps de la boucle. Seul ma progress bar �volu. J'ai donc plac� un Application->ProcessMessage() pour rendre la main et permettre l'affichage, mais l'affichage du TChart ralenti consid�rablement la boucle.

    J'ai donc d�cid� de cr�� un thread sp�cifique � l'affichage du pourcentage, et de le mettre � jour via la m�thode synchronize. Je voit bien en mode pas � pas que la valeur �volue, et qu'elle est bien inscrite mais elle ne s'affiche pas.

    J'ai donc d�cid� de changer la priorit� du thread, mais rien n'y fait.

    S'il quelqun sait pourquoi, ou encore voit une id�e pour rem�dier � ce probl�me d'affichage, je suis � son �coute.
    Merci d'avance

  3. #3
    Membre �m�rite
    Avatar de bandit boy
    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    916
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 916
    Par d�faut
    J'ai finalement affich� mon pourcentage gr�ce au Canvas, qui est apparemment prioritaire en affichage. Donc dans ma boucle for j'ai une mise � jour de mon affichage par le Canvas et celle ci s'affiche nikel !

  4. #4
    Membre exp�riment�
    Avatar de lanonyme
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    229
    D�tails du profil
    Informations personnelles :
    �ge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 229
    Par d�faut
    Bonjour,

    j'avai aussi eu un probleme avec les threads... et j'ai fait autrement...
    le mystere reste donc

    PS: je l'ai pas dis avant car j'en voyai pas l'utilit� ... la non plus tu me dira
    lanonyme

  5. #5
    Membre Expert Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 343
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 59
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activit� : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 343
    Par d�faut
    Bonjour,

    j'ai programm� y a quleques ann�es un moteur de jeu d'�chec.
    Le programme est capable de r�soudre des probl�mes de mat.
    Il est con�u pour bouffer toutes les ressources CPU disponibles:
    je n'y ai pas mis de ProcessMessage dans les boucles critiques.
    Eh oui, vitesse = performance pour une recherche de combinaisons �chiqu�ennes.

    A ma grande surprise, depuis que j'ai une nouvelle b�cane avec la nouvelle gestion de la RAM, mon application ne consomme plus que 50% du CPU.

    Je pense que c'est d� � l'astuce du 'Front bus' de la RAM annonc� � 800MHz, alors que les barettes de RAM tournent � 400MHz. Simplement le syst�me permet d'acc�der � 2 adresses m�moire sur un m�me front de bus. Donc 2 barettes � 400MHz �quivaut � 1 barette tournant � 800MHz.

    Et voila, sauf que mon appli compil� y a longtemp avec un VC++ du d�but, g�re probablement mal le syst�me Hyper Threading.

    J'en viens au sujet de la discussion, l'application peut utiliser 100% de CPU sur un type de machine, et seulement la moiti� sur un syst�me Hyper Threading.

    J'esp�re que je ne suis pas hors sujet

    @+

  6. #6
    Membre �m�rite
    Avatar de bandit boy
    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    916
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 916
    Par d�faut
    Mon probl�me �tait que je voulais afficher l'�tat de cette boucle, vu qu'elle est longue et ainsi �vit� � l'utilisateur de penser qu'elle est "plant�", mais cette affichage ne se faisait qu'une fois la boucle termin�e sauf pour la progression d'une ProgressBar. Je passait pas la mise de texte dans une StatusBar.

    Chose �trange pour moi de voir la mise � jour de la ProgressBar dans ma boucle, mais pas d'un texte !!! Finalement, j'ai remarqu� que la modification du Canvas avait la m�me priorit� que la ProgressBar.

    J'ai donc affich� mon Texte par le Canvas avec TextOut et miracle, je vois mon texte se mettre � jour pendant la boucle. Je n'ai donc pas de perte de performance, vu que je n'ai plus de ProcessMessage par contre, il est vrai que cette boucle demande donc de la ressource.
    50% sur un PC fixe et 100% sur un portable. Ceci est surment du au ph�nom�ne que tu as expliqu�.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Appel synchrone d'une fonction java depuis ACS3
    Par IDevlope dans le forum Flex
    R�ponses: 0
    Dernier message: 31/01/2012, 16h45
  2. fonction synchrone asynchrone
    Par akrlot dans le forum C
    R�ponses: 12
    Dernier message: 28/09/2007, 14h34
  3. Questions sur les sockets (fonctions synchrones)
    Par azerty25 dans le forum G�n�ral Dotnet
    R�ponses: 7
    Dernier message: 29/06/2007, 00h57
  4. R�ponses: 4
    Dernier message: 09/05/2007, 10h04
  5. Thread -> Utiliser Synchronize() dans une fonction
    Par Futixu dans le forum C++Builder
    R�ponses: 5
    Dernier message: 26/01/2007, 13h13

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