Einzelnen Beitrag anzeigen

Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.477 Beiträge
 
Delphi 12 Athens
 
#11

Re: Wie synchroniziere ich mehrere Threads richtig

  Alt 2. Apr 2009, 10: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