Einzelnen Beitrag anzeigen

Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.429 Beiträge
 
Delphi 10.4 Sydney
 
#11

Re: Wie synchroniziere ich mehrere Threads richtig

  Alt 2. Apr 2009, 09:17
Eine Ursache für das Einfrieren dürfte sein, dass die Anforderungen durch Synchronize mit höherer Priorität bearbeitet werden als sonstige Windowsnachrichten. Da bei 50 Threads die ständig Synchronize aufrufen eigentlich immer eine Anforderng vorliegt, werden Windowsnachrichten nicht mehr verarbeitet.
Auszug aus Unit Forms:
Delphi-Quellcode:
procedure TApplication.Idle(const Msg: TMsg);

{...}

{$IFDEF MSWINDOWS}
  if (GetCurrentThreadID = MainThreadID) and CheckSynchronize then
{$ENDIF}
{$IFDEF LINUX}
  if (Libc.GetCurrentThreadID = MainThreadID) and CheckSynchronize then
{$ENDIF}
    Done := False;
  if Done then WaitMessage;
end;
  Mit Zitat antworten Zitat