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
- La fonction BeginThread démarre un nouveau processus léger et exécute ThreadFunction dans le nouveau processus léger. Si le paramètre p est spécifié, il est passé à ThreadFunction. Si ThreadId est spécifié, il est rempli avec l'identificateur de processus léger du processus léger nouvellement démarré. Si le paramètre StackSize est spécifié, il est défini comme la taille de pile pour le nouveau processus léger. Si aucun n'est spécifié, une taille de pile par défaut de 4 Mo est utilisée.
- La fonction renvoie le descripteur de processus léger (ou l'identificateur, sur certains autres systèmes d'exploitation comme Linux ou OS/2) en cas de succès, ou 0 si une erreur s'est produite. Notez que l'identificateur de processus léger et l'identificateur de descripteur sont les mêmes sur les processus Unix, et que l'identificateur de processus léger et l'identificateur de descripteur de processus léger sont différents sur les systèmes Windows.
- En cas d'erreur, la valeur 0 est retourné.
Exemple
Voici un exemple montrant comment lancer deux processus fils :
- Program BeginThreadSamples;
-
- Type
- ForkData=Record
- Msg:String;
- End;
- ForkDataPtr=^ForkData;
-
- Var
- Thread1, Thread2:Integer;
- Id1,Id2:TThreadID;
- Fork1,Fork2:ForkData;
- I:Byte;
-
- Function MyFork(Parameter:Pointer):Integer;
- Var
- ForkData:ForkDataPtr Absolute Parameter;
- Begin
- MyFork := 0;
- Inc(I);
- WriteLn(ForkData^.Msg);
- EndThread(0);
- End;
-
- BEGIN
- I:=0;
- Fork1.Msg := 'Le programme fils 1!';
- Fork2.Msg := 'Le programme fils 2!';
- Thread1 := BeginThread(NIL,0,TThreadFunc(@MyFork),@Fork1,0,Id1);
- Thread2 := BeginThread(NIL,0,TThreadFunc(@MyFork),@Fork2,0,Id2);
- WriteLn('Le programme parent!');
- Repeat Until I >= 2;
- END.
-
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