Section courante

A propos

Section administrative du site

BEGINTHREAD

Débute un processus
Free Pascal System

Syntaxe

Function BeginThread(sa:Pointer;stacksize:SizeUInt;ThreadFunction:TThreadFunc;p:Pointer;creationFlags:DWord;Var ThreadId:TThreadID):TThreadID;
Function BeginThread(ThreadFunction:TThreadFunc):TThreadID;
Function BeginThread(ThreadFunction:TThreadFunc;p:Pointer):TThreadID;
Function BeginThread(ThreadFunction:TThreadFunc;p:Pointer;Var ThreadId:TThreadID):TThreadID;
Function BeginThread(ThreadFunction:TThreadFunc;p:Pointer;Var ThreadId:TThreadID;Const stacksize:SizeUInt):TThreadID;

Paramètres

Nom Description
sa Ce paramètre permet d'indiquer le pointeur des attributs de sécurité si nécessaire.
stacksize Ce paramètre permet d'indiquer la taille de la pile si nécessaire
ThreadFunction Ce paramètre permet d'indiquer l'adresse de la fonction contenant le processus
p Ce paramètre permet d'indiquer le pointeur des paramètres supplémentaire.
creationFlags Ce paramètre permet d'indiquer les attributs de création du processus.
ThreadId Ce paramètre permet d'indiquer le numéro d'identification du processus.

Description

Cette fonction permet de lancer un nouveau processus d'exécution.

Remarques

Exemple

Voici un exemple montrant comment lancer deux processus fils :

  1. Program BeginThreadSamples;
  2.  
  3. Type
  4.  ForkData=Record
  5.   Msg:String;
  6.  End;
  7.  ForkDataPtr=^ForkData;
  8.  
  9. Var
  10.  Thread1, Thread2:Integer;
  11.  Id1,Id2:TThreadID;
  12.  Fork1,Fork2:ForkData;
  13.  I:Byte;
  14.  
  15. Function MyFork(Parameter:Pointer):Integer;
  16. Var
  17.  ForkData:ForkDataPtr Absolute Parameter;
  18. Begin
  19.  MyFork := 0;
  20.  Inc(I);
  21.  WriteLn(ForkData^.Msg);
  22.  EndThread(0);
  23. End;
  24.  
  25. BEGIN
  26.  I:=0;
  27.  Fork1.Msg := 'Le programme fils 1!';
  28.  Fork2.Msg := 'Le programme fils 2!';
  29.  Thread1 := BeginThread(NIL,0,TThreadFunc(@MyFork),@Fork1,0,Id1);
  30.  Thread2 := BeginThread(NIL,0,TThreadFunc(@MyFork),@Fork2,0,Id2);
  31.  WriteLn('Le programme parent!');
  32.  Repeat Until I >= 2;
  33. END.
  34.  

on obtiendra le résultat semblable suivant :

Le programme parent!
Le programme fils 1!
Le programme fils 2!

Voir également

Langage de programmation - Free Pascal - Référence de procédures et fonctions - «EndThread»

Dernière mise à jour : Samedi, le 18 juillet 2015