Il semble que j'ai finalement réussi à mettre en œuvre une sorte de threading dans mon programme Delphi 2009. S'il n'y avait qu'une seule façon de le faire, je serais déjà prêt. Mais je vois plusieurs possibilités.
Quelqu'un peut-il m'expliquer quelle est la différence entre les deux et pourquoi je choisirais l'une plutôt que l'autre ?
-
La classe TThread dans Delphi
-
... d'autres ?
Edit :
Je viens de lire un excellent article de Gabr dans le numéro de mars 2010 (n° 10) de la revue Magazine Blaise Pascal intitulé "Quatre façons de créer un fil". Il faut s'abonner pour avoir accès au magazine, donc, en vertu des droits d'auteur, je ne peux pas reproduire ici quoi que ce soit de substantiel.
En résumé, Gabr décrit la différence entre l'utilisation de TThreads, les appels directs à l'API Windows, les AsyncCalls d'Andy et sa propre OmniThreadLibrary. Il conclut cependant à la fin que :
"Je ne dis pas que vous devez choisir autre chose que la méthode classique de Delphi (TThread) mais il est toujours bon d'être informé des options que vous avez"
La réponse de Mghie est très complète et suggère que OmniThreadLibrary est peut-être préférable. Mais je suis toujours intéressé par les opinions de chacun sur la façon dont je (ou quiconque) devrait choisir sa méthode de threading pour son application.
Et vous pouvez ajouter à la liste :
. 4. Appels directs à l'API Windows
. 5. Misha Charrett Cadre d'application distribué du CSI comme suggéré par LachlanG dans sa réponse.
Conclusion :
Je vais probablement opter pour OmniThreadLibrary. J'aime le travail de Gabr. J'ai utilisé son profileur GPProfile il y a plusieurs années, et j'utilise actuellement son GPStringHash qui fait partie de OTL.
Mon seul souci pourrait être de le mettre à niveau pour qu'il fonctionne avec des traitements 64 bits ou Unix/Mac, une fois qu'Embarcadero aura ajouté cette fonctionnalité dans Delphi.