Dériver une classe en thread, héritage multiple

Messages postés
152
Date d'inscription
jeudi 22 novembre 2007
Statut
Membre
Dernière intervention
21 mars 2016
- - Dernière réponse : zwyx
Messages postés
152
Date d'inscription
jeudi 22 novembre 2007
Statut
Membre
Dernière intervention
21 mars 2016
- 23 juin 2010 à 17:43
Bonjour à tous,

J'ai créé une classe, dérivée de TComponent, gérant le calcul séquentiel, pas à pas. En voici un bref extrait:
TCalcul = class(TComponent)
private
  ...
protected
  procedure CalculerProchaineEtape;
  ...
public
  constructor Create(AOwner: TComponent); virtual;
  destructor Destroy; virtual;
  procedure Demarrer; virtual;
  ...
end;

procedure TCalcul.Demarrer;
begin
  ...
  CalculerProchaineEtape;
  ...
end;

procedure TCalcul.CalculerProchaineEtape;
begin
  ...
  CalculerProchaineEtape;
  ...
end;

Je souhaite en dériver une nouvelle classe, disons TCalculThread, mais héritant aussi de TThread. Tout d'abord, est-ce une bonne idée, ou aurais-je de mauvaises surprises à l'exécution ? Deuxièmement, dois-je pour le faire, déclarer une interface ICalcul de ma classe TCalcul pour enfin écrire:
TCalculThread = class(TThread, ICalcul)

Merci pour vos avis ou alertes, si je pars dans une mauvaise direction, car je n'ai encore jamais travaillé sur les thread.

Bien à vous.
Afficher la suite 

3 réponses

Messages postés
2527
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
16 octobre 2019
13
0
Merci
Bonjour,

Le sujet dépasse mes compétences mais je vais tenter de te dire ce que j'en sais en espérant que cela t'éclairera un peu.

En Delphi, l'héritage multiple stricto sensu n'existe pas car toutes les classes de la VCL descendent de TObject.
Les delphistes utilisent les Interfaces pour y arriver. Il semble donc que tu sois sur la bonne voie.

Quant à la programmation multiThread, sans être très compliquée, elle demande une attention soutenue. On est vite parti dans une boucle sans fin et la multiplication des Threads peut provoquer une dégradation rapide des performances de la machine.
La synchronisation est d'une importance cruciale, et tu utiliseras sans doutes les sections critiques, les événements, les mutex ou les sémaphores pour la synchronisation des tâches.
En tout cas, il est je pense préférable de bien se documenter sur les Threads avant de s'y lancer et de se faire une idée précise du multitâche et de ses concéquences sur le partage de la mémoire car, une fois dans le bain, il est difficile d'apprendre à nager.

Désolé de ne pas pouvoir t'en dire plus,
et bonne chance !
Commenter la réponse de Caribensila
Messages postés
49
Date d'inscription
mercredi 19 mai 2010
Statut
Membre
Dernière intervention
30 mars 2011
0
Merci
Salut !

Je rejoins caribensila ! A mon avis tu devrais pas poster chez les debutants
C'est plus debutant du tout ton truc !!!

Cordialement


@++
Commenter la réponse de cleecky
Messages postés
152
Date d'inscription
jeudi 22 novembre 2007
Statut
Membre
Dernière intervention
21 mars 2016
0
Merci
Merci bien à vous, Caribensila et cleecky.

Je me doutais que les réponses ne fuseraient pas suite à ma question, comme si j'avais demandé comment convertir un entier en chaîne...

Je connais déjà les termes synchronisation et sections critiques. Par contre, les mutex et sémaphores ne font que me rappeler à quel point on oublie vite ce qu'on a appris. Il faudrait effectivement que je me replonge dans l'étude d'un tutoriel.

Si j'en trouve un assez synthétique, je diffuserai le lien dans ce sujet. Cependant, si un admin passant par là trouve le sujet sans intérêt. Je ne me vexerai pas s'il décide de le supprimer.

Bonne continuation à tous.
Commenter la réponse de zwyx