Delphi pour Net 8 aspects du multi-threading - PowerPoint PPT Presentation

About This Presentation
Title:

Delphi pour Net 8 aspects du multi-threading

Description:

M 2 / T A - S T L. u n i v e r s i t . p i e r r e & m a r i e c u r i e. p a r i s 6 ... liste TList sous-jacente. FDuplicates : TDuplicates ; // autoriser ou ... – PowerPoint PPT presentation

Number of Views:77
Avg rating:3.0/5.0
Slides: 7
Provided by: Did284
Category:

less

Transcript and Presenter's Notes

Title: Delphi pour Net 8 aspects du multi-threading


1
Delphi pour Net8aspects du multi-threading
  • le thread principal dapplication
  • aperçu de la classe TThread
  • méthodes Synchronize et Queue
  • sections critiques

2
le thread principal dapplication
composants VCL
thread principal dapplication
file dattente des messages
gestionnaires dévénements
  • thread principal dapplication
  • exécution de lapplication
  • exécution des composants VCL
  • file dattente principale des messages
  • stratégie non thread-safe de la librairie VCL
  • implémentations cachées
  • interactions complexes
  • souci des performances
  • force à diminuer les interactions

3
aperçu de la classe TThread
TThreadMethod procedure of object
TThread class protected procedure
Execute virtual
abstract procedure Queue (AMethod
TThreadMethod) overload procedure
Synchronize(AMethod TThreadMethod) overload
public constructor Create
(CreateSuspended Boolean) destructor
Destroy override procedure Resume
procedure Suspend class
procedure Queue (AThread TThread AMethod
TThreadMethod)overload class procedure
StaticQueue (AThread TThread AMethod
TThreadMethod) end
  • méthode Execute
  • corps du thread
  • terminaison  normale  Execute se termine
  • paramètre CreateSuspended du constructeur Create
  • true le thread est créé suspendu (nécessite
    ensuite un appel à Resume)
  • false la méthode Execute commence tout de suite
    son exécution

4
méthodes Synchronize et Queue
TThreadMethod procedure of object
procedure TMyThread.doSomething begin
end procedure TMyThread.Execute begin
Synchronize( doSomething )
Queue( doSomething ) end
avec attente de la fin de la méthode à
synchroniser
sans attente de la fin de la méthode à
synchroniser
  • méthode Synchronize de TThread
  • déclarée protected
  • synchronise une méthode sans paramètres
  • appel bloquant jusquà la fin de la méthode
  • méthode dinstance Queue de TThread
  • déclarée protected
  • synchronisation dune méthode sans paramètres
  • appel passant (pas dattente de la fin de la
    méthode)
  • cf. la méthode de classe StaticQueue de TThread

5
la classe TThreadList
TThreadList class private FList
TList // liste TList sous-jacente
FDuplicates TDuplicates // autoriser ou non
les duplications public constructor Create
function LockList TList //
verrouiller la liste procedure UnlockList
// déverrouiller la liste procedure
Clear // vider la liste
!!! thread-safe procedure Add ( Item
TObject ) // ajouter un élément !!!
thread-safe procedure Remove ( Item TObject
) // supprimer un élément !!! thread-safe
property Duplicates TDuplicates read
FDuplicates write FDuplicates end
  • wrapper thread-safe de la classe TList
  • verrouillage via Lock/Unlock
  • méthodes Add, Clear, Remove thread-safe

procedure var wList TList begin
wList FList.LockList try
if wList.Count then
finally FList.UnlockList end end
  • file dattente thread-safe
  • références dobjets
  • sur string et tout type de base boxé

6
sections critiques avec TCriticalSection
FCriticalSection TCriticalSection.Create
création de lobjet de synchronisation
// section critique en Acquire/Release
FCriticalSection.Acquire try // ici
corps de la section critique finally
FCriticalSection.Release end try // section
critique en Enter/Leave FCriticalSection.Enter
try // ici corps de la section
critique finally FCriticalSection.Leave end
try
  • réalisation de sections critiques
  • objet de synchronisation TCriticalSection
  • synchronisation via Acquire/Release
  • méthodes Enter/Leave strictement équivalentes
Write a Comment
User Comments (0)
About PowerShow.com