Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Conseil sur l'utilisation des threads [ Divers / Débutant(e) ] (John Dogget)

lundi 24 septembre 2007 à 18:36:53 | Conseil sur l'utilisation des threads

John Dogget

Bonjour à tous.

Je voudrais mettre à jour ma source déposé ici (http://www.delphifr.com/codes/GENERATEUR-ALEATOIRE-FICHIER_44115.aspx) en ajoutant quelques fonctions.
Notemmant l'ajout d'une fenetre qui indique la progression des operations en cours.

Comme la création de fichier a tendance à vampiriser les ressources, la mise à jour de la progression est problematique dans la mesure où elle fait perdre beaucoup de temps à l'application.

D'où mon idée d'utiliser un thread pour la mise à jour.

A votre avis, est'il preferable d'utiliser un thread pour la création du fichier (gros consommateur de ressource) ou bien pour la mise à jour de la progression (source de lenteur) ?
En sachant que la création du fichier sera limité à un moment par la vitesse d'ecriture sur le disque ...

J'attends vos conseils zéclairés

lundi 24 septembre 2007 à 19:46:18 | Re : Conseil sur l'utilisation des threads

florenth

Membre Club
Réponse acceptée !
Salut !

En toute logique, si tu crée un thread en plus de celui qui est géré par la VCL, c'est pour faire du travail... pas pour afficher !
Et ce, d'autant plus que les méthodes de la VCL nécessitent d'être d'appelées depuis le thread principal.

En résumé:
  1. Le thread principal: pour l'affichage (normal quoi).
  2. Le deuxième thread: pour le travail.
Concrètement:
  1. Tu crée un TThread pour créer ton fichier, lequel communiquera au thread principal de se mettre à jour.
  2. Pour la communication, le plus simple (et le plus sûr) : Synchronize(). C'est aussi le plus lent, donc ne rafraîchit l'affichage toutes les secondes par exemple (en gardant en mémoire un Tick que tu compares).
  3. Si tu veux te tenter aux messages de rafraîchissements, et autres artifices de mémoire partagér, c'est à tes risques et périls...
++
Flo
Ressources Delphi, sources, tutoriaux, actu, ...: www.mx-dev.net [ Lien ]

lundi 24 septembre 2007 à 19:53:32 | Re : Conseil sur l'utilisation des threads

John Dogget

Merci à toi, je vais faire comme ça

lundi 24 septembre 2007 à 19:57:27 | Re : Conseil sur l'utilisation des threads

John Dogget

J'ai une autre question

Pourquoi ne pas utiliser un TTimer pour l'affichage, au lieu d'un Tick (avec getthickcount j'imagine) ?

C'est plus rapide, plus elegant, mieux ?

mardi 25 septembre 2007 à 09:03:13 | Re : Conseil sur l'utilisation des threads

Loda

Membre Club
salut,

le TTimer te crée pas mal de trucs derrière et utilise des ressource system plus importante qu'un simple gettickcount. aussi, un ttimer est asycrone avec ton thread, tantdis que tu choisit le moment de lire le gettickcount.

aussi, tu peux ne rafraichir l'affichage que tout les 2 fichiers ou n'import quel autre condidtions que tu trouve adaptée.

bon code,

Loda

Se poser les bonnes questions est le premier pas pour trouver les bonnes réponses.

mardi 25 septembre 2007 à 16:44:37 | Re : Conseil sur l'utilisation des threads

florenth

Membre Club
A réfléchir car si le fichiers font 2 Go chacun, ça risque d'être long !
De la même façon, s'ils font 10Ko, tu auras trop de rafraîchissements (ça caille après, quoi !).

Mais le problème du rafraîchissement reste entier, surtout si, comme japee s'y est déjà tenté, on veut pouvoir afficher non seulement l'avancement mais aussi le temps restant et permettre l'abandon de l'utilisateur (chose qu'il faut toujours prévoir... l'utilisateur est impatient).
J'ai déjà essayé plusieurs techniques, mais sans réel succès.
Là, en écrivant le post, je viens d'avoir une idée...

++
Flo

Ressources Delphi, sources, tutoriaux, actu, ...: www.mx-dev.net [ Lien ]

mardi 25 septembre 2007 à 17:35:08 | Re : Conseil sur l'utilisation des threads

John Dogget

Pour l'instant j'avais pas prevu de mettre un temps restant ou une possibilité d'annuler les operations.
Mettre correctement le thread en place sera déjà un bon début

mardi 25 septembre 2007 à 22:03:13 | Re : Conseil sur l'utilisation des threads

John Dogget

Voilà, j'ai mis mon code à jour.
Le résultat est pas trop mal je pense

J'atteinds 10 Mo/sec en écriture, mais peut être qu'il est possible d'optimiser encore l'algo pour aller plus vite, je suis pas un pro.

A vous de me dire ce que vous en pensez

Mon code est ici : http://www.delphifr.com/codes/GENERATEUR-ALEATOIRE-FICHIER_44115.aspx



Cette discussion est classé dans : fichier, création, jour, progression, conseil


Répondre à ce message

Sujets en rapport avec ce message

Création d'un fichier .txt (quelle commande)? [ par stigmate101 ] Quelle est la méthode ou la commande pour créer un fichier .txt?.Je dois faire une application qui génère automatiquement des fichiers .txt dans un ré Coupeur de fichier avec création d'un .bat [ par MasterNKZ ] Salut a tousJ'expose mon problème:j'essaie de réaliser un coupeur de fichier en plusieurs parties ki crée donc un certain nombre de fichiers contenant création de menu [ par sweet_faten ] bonjour les programmeurs/euses,je suis sur le point de finaliser mon application, je suis une débutante en delphi et donc j'ai toujours un peu de mal Transfert d'un fichier qui est en cours de création [ par Francky23012301 ] Salut à tous,Est il possible de transferer un fichier entre un serveur et un client si celui ci est en cours de réalisationMerci mettre a jour le contenu d1 memo a partir d1 fichier [ par dahman ] salutmon petit prob est que l orque je fait un loadfromfile ds un memo je peut pas mettre a jour les donnee affiche ds le memo c t a dire lorsque je m Mettre à jour un fichier ini [ par codial ] Bonjour,comment fait on pour mettre à jour un fichier ini ? je m'explique:je voudrais dans une rubrique nommée  [Bases] mettre plusieurs lignes en ajo Création de fichier d'aide [ par michelborland ] Bonjour,Quel est  le logiciel le plus simple pour créer des fichiers d'aide pour les applications delphi.Merçi . Création mises à jour [ par Matt 261 ] Bonjour tout les monde!J'ai une petite question . Je recherche comment créer une mise à jour (par exemple correction d'un bug, MàJ sécurité...) de mon Création et utilisation d'un fichier texte [ par bidulchouette ] Bonjour, j'ai fait quelques recherches sur les forums du site mais je n'ai pas trouvé exactement ce que je cherchais. Voila, en fait je voudrai savoir Mise à jour automatique d'une grille [ par lun4t1k ] Bonjour à tous, Mon problème n'est pas compliqué en soit c'est juste la méthode qu'il me manque. Je ne trouve pas grand chose àce sujet. Je dispose d'


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 1,061 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.