1 million de particules accessibles en moins de 100 ms...

Description

Vous avez dû vous en rendre compte, le résultat d'un appel à une propriété d'un TThread, stockéee sur plus de 2 octets, est très improbable, et parfois imprévisible.

Pour contourner cela, j'ai écris un descendant de TThreadList : TVariables.
Cet object fonctionne comme un tableau de Variant, indicé par un titre, et s'en trouve être threadsafe. En interne, il stocke et gère des instances de TVariable.

Pour le tester, j'ai écris un descendant de TThread : TBreeze, avec trois caractéristiques intéressantes :

1 - L'arrêt se fait par le positionnement de Stop, qui sera à vérifier, par la propriété ByPass, lors des traitements effectués dans la boucle principal. L'avantage, est de profiter de l'état Terminated à False, sachant pourtant que le thread doit se stopper.

2 - Il est prévu une pile de procédures à appeller lors d'un cycle de la boucle principale, ce qui permets d'écrire un traitement dans une procédure "classique", et d'ajouter/de retirer son pointeur de la liste Procedures. Les procédures ainsi ordonnées, seront appellées en séquence à chaque tour de boucle.

3 - Une instance de TVariables y est implémentée

16/05/2012 :
  • TRow, comme promis, permets de gérer des variants représentant un ensemble de valeurs et d'y effectuer des opérations simples (*/+-, opposé...), tout en instaurant une politique actually/objectif/vector, permettant de définir une valeur cible comme destination d'une valeur source, à une vitesse donnée (par un thread)
  • TArray est une extension de TRow, qui permets de définir des tableaux de Variants (threadsafe), et de les retranscrire sous forme texte ou array of array of Variant...
  • TZephyr, est un TBreeze qui sert de support à TForce.
  • TCloud se comporte comme une TThreadList d'objets (particules), dont la particularité est d'être "formé" de n TVapors (et pourtant indicé en continu). Sa structure lui permets la découpe des traitements en TThreads et sous-TThreads...
  • TForce permets d'agir à sa guise, sur un TVapor ou sur un TCloud
  • TDelphes est un composant (pour l'instant', dît test...amené à posséder son propre "décor", voire "relief".


(à suivre)

Source / Exemple :


Le source, livré est composé d'une unité : Delphi.Pas, et d'une fiche : Unit1.pas / .dfm.

L'implémentation de la fiche, démontre l'utilisation de Variables threadsafe, via une pile d'appels de procédures.

Conclusion :


La puissance des TThreads est révélée grâce à la découpe en packets d'objets, pour les traitement en masse d'objets...

No Comments....?

Blueperfect

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.