2010-08-28 10 views
2

Je cherche un cadre de threading pour éviter de l'écrire à partir de rayures. En particulier les tâches de mise en file d'attente et de synchronisation sont ce dont j'ai besoin. Je connais OmniThreadLibrary qui est génial mais qui n'est pas compatible avec D7. Des recommandations?Threading Framework pour Delphi 7 - tout?

+2

File d'attente: 'PostMessage',' QueueUserWorkItem'. Synchronisation: 'Synchronize',' WaitForSingleObject'. Que recherchez-vous d'un "framework" que l'OS et le RTL ne fournissent pas déjà? –

+5

Rob, jetez un oeil à OmniThreadLibrary et la façon dont il simplifie le filetage :) – migajek

+0

@migajek: Eh bien, personnellement, j'ai tendance à trouver des choses de bas niveau plus faciles à comprendre. Les principes sont simples. –

Répondre

6

Donc, vous voulez rester avec Delphi 7, et vous voulez une bonne bibliothèque de threads, mais vous ne voulez pas l'écrire à partir de zéro.

Un jour, vous allez mettre à jour, j'en suis sûr. Alors pourquoi opter pour une médiocre librairie de threads que vous devrez changer quand vous le ferez.

Ma recommandation serait de prendre OmniThreadLibrary, et essayez de le porter pour travailler avec Delphi 7. Ensuite, vous aurez un chemin de mise à niveau.

Sinon, essayez l'une des recommandations: How Do I Choose Between the Various Ways to do Threading in Delphi?

+0

La décision de rester avec D7 ou non n'est pas à ma hauteur, malheureusement :(Sinon j'aurais mis à jour à Unicode, version générique comme D2010 :) En tout cas merci pour le lien, je dois l'avoir manqué pour une raison inconnue. – migajek

3

Un cadre de filetage pourrait vous faire économiser des mois de travail à long terme, afin en fonction de l'importance de l'avoir, vous pouvez peut-être l'utiliser comme raison de mise à niveau. Et toute personne qui suggère que TThread et d'autres primitives de synchronisation Windows sont tout ce dont vous avez besoin n'a évidemment pas écrit beaucoup de code threadé. J'estime que j'ai passé au moins 3 à 6 mois juste pour développer mon propre framework de threading pour rendre les choses plus faciles, et il a facilement "payé" pour lui-même.

+3

"Et toute personne qui suggère que TThread et d'autres primitives de synchronisation Windows sont tout ce dont vous avez besoin n'a évidemment pas écrit beaucoup de code fileté." C'est vrai, c'est comme demander pourquoi la VCL est nécessaire quand tout peut facilement être fait en utilisant les appels API WIN32. – mghie

+1

La question n'est pas seulement si les apis de base de Windows sont suffisants, la question est également si vous pouvez voir un cadre de thread séparément du cadre d'application pour la classe d'applications que vous ciblez. J'ai quelques doutes à ce sujet. –

+1

À mon humble avis, le cadre de filetage devrait faire partie intégrante du cadre d'application.Je cible des applications/systèmes de type service qui sont presque par définition des systèmes multi-threads/distribués, ainsi mon framework de threading et mon framework de communication sont étroitement intégrés de sorte que le passage de messages entre threads est identique au passage de messages entre applications. – Misha