Einzelnen Beitrag anzeigen

C.Schoch

Registriert seit: 2. Jan 2006
Ort: Wüstenrot
235 Beiträge
 
Turbo Delphi für Win32
 
#1

msgWaitforMultipleObjects verzögert auf Dual Core

  Alt 4. Dez 2006, 20:34
Hi,
msgWaitforMultipleObjects benötigt bis zu 20 Sekunden nach Beendigung des letzten Thread um WAIT_OBJECT_0 zurückzugeben sonst wird immer nur WAIT_TIMEOUT zurückgegeben.
Das passiert aber nur mit DualCores auf den Single Cores sieht alles normal aus.
Die Hauptanwendung läuft auf beiden Cores und die Threads werden auf verschiedene Cores verteilt.

Delphi-Quellcode:
         
repeat
  // Auf Threads warten
  dwWaitResult := msgWaitforMultipleObjects(length(ThreadArray), ThreadArray, true, 100, QS_ALLINPUT);
  if dwWaitResult <> WAIT_OBJECT_0 then
  begin
    StatusbarUpdate; // Statusbar updaten / Progress berechnen
    pmShowErrors.Enabled := bError and (tvSourceDestination.FocusedNode <> nil);
    mmShowErrors.Enabled := pmShowErrors.Enabled;
    Application.ProcessMessages; // GUI aktualisieren
  end;
until dwWaitResult = WAIT_OBJECT_0; // keinen Threads mehr zum warten
P.S.: Auch wenn nur ein Core von der Anwendung benutzt wird, tritt das Problem auf.
Tschau Christian
Das System hofft auf Besserung
[Siemens]
  Mit Zitat antworten Zitat