Bonjour,

dans l'exemple Lazarus/version/examples/multithreading/waitforexample1 je trouve la procédure suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
procedure TThreadA.Execute;
begin
  Form1.ThreadB := TThreadB.Create(false);
  // create event
  WaitForB := RTLEventCreate;
  while not Application.Terminated do begin
    Log('A: wait for B ...'); 
    // wait infinitely (until B wakes A)
    RtlEventWaitFor(WaitForB);
    Log('A: ThreadB.Counter=' + IntToStr(Form1.ThreadB.Counter));
  end;
end;
Regardez bien la 1re ligne, je la remets toute seule :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Form1.ThreadB := TThreadB.Create(false);
et si je pose la question, c'est parce que nulle part dans le code je n'ai trouvé de destruction de ce ThreadB.
Est-ce à dire que si je fais tourner le programme un certain temps, ça va consommer toute la mémoire disponible jusqu'au crash de la machine ?

Quant à la ligne suivante, WaitForB := RTLEventCreate;, j'ai jeté un coup d'œil à l'aide et ça donne ça :
Citation Envoyé par aide Lazarus
RTLEventCreate creates and initializes a new RTL event. RTL events are used to notify other threads that a certain condition is met, and to notify other threads of condition changes (conditional variables).

The function returns an initialized RTL event, which must be disposed of with RTLEventdestroy.
et nulle part dans le code je ne trouve d'appel à RTLEventdestroy.
Qu'est-ce que les spécialistes des threads en pensent ?

Et enfin juste pour rire, quand on fait des manips tordues avec les threads, des fois l'exécutable ne répond plus et il faut le tuer, le pauvre, en cliquant sur la croix, mais il se défend par un dernier message :
Nom : erreur1.png
Affichages : 389
Taille : 17,2 Ko

Le gag c'est ce qui arrive après la validation :
Nom : erreur2.png
Affichages : 373
Taille : 14,0 Ko

Et cette information est confirmée par l'utilisation de l'outil locate (sous Linux, que du bonheur), qui ne trouve rien :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
$ locate futex-internal.h
$ (vide)
Au plaisir de vous lire...