System.Classes.TThread.Synchronize : Différence entre versions
(removed links to deleted examples) |
(Translated using Trados. LOC-21113) |
||
| Ligne 1 : | Ligne 1 : | ||
{{#lst:API:System.Classes.TThread.Synchronize|api}} | {{#lst:API:System.Classes.TThread.Synchronize|api}} | ||
| + | |||
==Description== | ==Description== | ||
| + | |||
{{#ifeq: {{PAGENAME}} | System.Classes.TThread.Synchronize | |{{InheritsFrom|System.Classes.TThread.Synchronize}}}} | {{#ifeq: {{PAGENAME}} | System.Classes.TThread.Synchronize | |{{InheritsFrom|System.Classes.TThread.Synchronize}}}} | ||
| − | <section begin=short />Exécute un appel de méthode dans le thread principal.<section end=short /> | + | <section begin="short" />Exécute un appel de méthode dans le thread principal.<section end="short" /> |
| − | [[System.Classes.TThread.Synchronize|Synchronize]] provoque l'exécution de l'appel spécifié par <code>AMethod</code> en utilisant le thread principal, ce qui évite les conflits multithread. Le paramètre <code>AThread</code> associe le thread | + | [[System.Classes.TThread.Synchronize|Synchronize]] provoque l'exécution de l'appel spécifié par <code>AMethod</code> en utilisant le thread principal, ce qui évite les conflits multithread. Le paramètre <code>AThread</code> associe le thread appelant. |
| − | Pour les méthodes statiques, vous pouvez associer <code>AMethod</code> | + | Pour les méthodes statiques, vous pouvez associer <code>AMethod</code> avec tout thread en utilisant les paramètre <code>AThread</code>. Vous pouvez aussi utiliser '''nil/NULL''' en tant que paramètre <code>AThread</code> si vous n'avez pas besoin de connaître les informations sur le thread appelant dans le thread principal. |
| − | Dans l'implémentation en cours, la méthode [[System.Classes.TThread.Synchronize|Synchronize]] peut utiliser | + | Dans l'implémentation en cours, la méthode [[System.Classes.TThread.Synchronize|Synchronize]] peut utiliser des informations de thread afin de réveiller le thread principal sur les plates-formes Windows. |
| − | Si vous n'êtes pas sûr qu'un appel de méthode soit adapté à l'utilisation de threads, effectuez l'appel depuis la méthode [[System.Classes.TThread.Synchronize|Synchronize]] pour garantir son exécution dans le thread principal. | + | Si vous n'êtes pas sûr qu'un appel de méthode soit adapté à l'utilisation de threads, effectuez l'appel depuis la méthode [[System.Classes.TThread.Synchronize|Synchronize]] pour garantir son exécution dans le thread principal. |
L'exécution du thread en cours est interrompue tant que la méthode s'exécute dans le thread principal. | L'exécution du thread en cours est interrompue tant que la méthode s'exécute dans le thread principal. | ||
| − | <blockquote>''' | + | <blockquote>'''Avertissement :''' N'appelez pas [[System.Classes.TThread.Synchronize|Synchronize]] depuis le thread principal. Cela peut provoquer une boucle infinie.</blockquote> |
| − | <blockquote>''' | + | <blockquote>'''Remarque :''' Vous pouvez aussi protéger les méthodes non sécurisées en utilisant des sections critiques ou le synchroniseur en écriture exclusive multi-lecture.</blockquote> |
| − | + | Par exemple, vous pourriez vouloir utiliser [[System.Classes.TThread.Synchronize|Synchronize]] lorsque vous voulez intéragir avec un composant soit VCL soit FireMonkey. Utilisez à la place une méthode anonyme pour résoudre le problème de la transmission de variables à la méthode que vous souhaitez synchroniser : | |
<source lang="delphi"> | <source lang="delphi"> | ||
Synchronize( | Synchronize( | ||
| Ligne 27 : | Ligne 29 : | ||
end); | end); | ||
</source> | </source> | ||
| + | |||
===Voir aussi=== | ===Voir aussi=== | ||
| − | * [[System.Classes.TThread.Execute|Execute]] | + | * [[System.Classes.TThreadMethod|System.Classes.TThreadMethod]] |
| − | + | * [[System.Classes.TThread.Execute|System.Classes.TThread.Execute]] | |
| − | * [[System.Classes.TThread.Queue|Queue]] | + | * [[System.Classes.TThread.Queue|System.Classes.TThread.Queue]] |
| − | + | * [[System.Classes.TThread.OnTerminate|System.Classes.TThread.OnTerminate]] | |
| − | * [[System.Classes.TThread.OnTerminate|OnTerminate]] | + | * [[System.SyncObjs.TCriticalSection|System.SyncObjs.TCriticalSection]] |
| + | * [[System.SysUtils.TMultiReadExclusiveWriteSynchronizer|System.SysUtils.TMultiReadExclusiveWriteSynchronizer]] | ||
| + | * [[System.Classes.CheckSynchronize|System.Classes.CheckSynchronize]] | ||
| + | * [[rad_fr:Utilisation du thread VCL principal|Utilisation du thread VCL principal]] | ||
| − | + | ===Exemples de code=== | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | * [[Samp_en:Synchronize (Delphi)|Synchronize (Delphi)]] | |
| − | * [[ | + | * [[Samp_en:ThreadSynchronize (C++)|ThreadSynchronize (C++)]] |
| − | * [[ | + | * [[Samp_en:ThreadSynchronize (Delphi)|ThreadSynchronize (Delphi)]] |
| − | * [[ | + | * [[Samp_en:TThreadYield (Delphi)|TThreadYield (Delphi)]] |
| − | * [[ | + | * [[Samp_en:TThreadYield (C++)|TThreadYield (C++)]] |
| − | * [[ | ||
[[Category:Documentation API]] | [[Category:Documentation API]] | ||
Version du 25 avril 2016 à 12:50
Delphi
procedure Synchronize(AMethod: TThreadMethod); overload;
procedure Synchronize(AThreadProc: TThreadProcedure); overload;
class procedure Synchronize(const AThread: TThread; AMethod: TThreadMethod); overload; static;
class procedure Synchronize(const AThread: TThread; AThreadProc: TThreadProcedure); overload; static;
C++
void __fastcall Synchronize(TThreadMethod AMethod)/* overload */;
void __fastcall Synchronize(_di_TThreadProcedure AThreadProc)/* overload */;
static void __fastcall Synchronize(TThread* const AThread, TThreadMethod AMethod)/* overload */;
static void __fastcall Synchronize(TThread* const AThread, _di_TThreadProcedure AThreadProc)/* overload */;
Propriétés
| Type | Visibilité | Source | Unité | Parent |
|---|---|---|---|---|
procedure function |
public | System.Classes.pas System.Classes.hpp |
System.Classes | TThread |
Description
Exécute un appel de méthode dans le thread principal.
Synchronize provoque l'exécution de l'appel spécifié par AMethod en utilisant le thread principal, ce qui évite les conflits multithread. Le paramètre AThread associe le thread appelant.
Pour les méthodes statiques, vous pouvez associer AMethod avec tout thread en utilisant les paramètre AThread. Vous pouvez aussi utiliser nil/NULL en tant que paramètre AThread si vous n'avez pas besoin de connaître les informations sur le thread appelant dans le thread principal.
Dans l'implémentation en cours, la méthode Synchronize peut utiliser des informations de thread afin de réveiller le thread principal sur les plates-formes Windows.
Si vous n'êtes pas sûr qu'un appel de méthode soit adapté à l'utilisation de threads, effectuez l'appel depuis la méthode Synchronize pour garantir son exécution dans le thread principal.
L'exécution du thread en cours est interrompue tant que la méthode s'exécute dans le thread principal.
Avertissement : N'appelez pas Synchronize depuis le thread principal. Cela peut provoquer une boucle infinie.
Remarque : Vous pouvez aussi protéger les méthodes non sécurisées en utilisant des sections critiques ou le synchroniseur en écriture exclusive multi-lecture.
Par exemple, vous pourriez vouloir utiliser Synchronize lorsque vous voulez intéragir avec un composant soit VCL soit FireMonkey. Utilisez à la place une méthode anonyme pour résoudre le problème de la transmission de variables à la méthode que vous souhaitez synchroniser :
Synchronize(
procedure
begin
Form1.Memo1.Lines.Add(‘Begin Execution’);
end);
Voir aussi
- System.Classes.TThreadMethod
- System.Classes.TThread.Execute
- System.Classes.TThread.Queue
- System.Classes.TThread.OnTerminate
- System.SyncObjs.TCriticalSection
- System.SysUtils.TMultiReadExclusiveWriteSynchronizer
- System.Classes.CheckSynchronize
- Utilisation du thread VCL principal