Einzelnen Beitrag anzeigen

Basilikum

Registriert seit: 9. Aug 2003
389 Beiträge
 
Delphi 7 Professional
 
#6

Re: msgWaitforMultipleObjects verzögert auf Dual Core

  Alt 9. Dez 2006, 18:44
Zitat von C.Schoch:
@Basilikum: fWaitAll ist gewollt, da ich ja auf alle Threads warten möchte in ThreadArray warten möchte. falls immer WAIT_OBJECT_0 beim letzten also 4. Thread zurückgegeben wird ist dieser Flag natürlich hinfällig.
ThreadArray ist so Deklariert:
ThreadArray : array of THandle;
diese Frage hat sich erübrigt - ich habe soeben mit Schrecken festgestellt, dass der Compiler für
WaitforMultipleObjects(...,@ThreadArray,...)
und
WaitforMultipleObjects(...,@ThreadArray[0],...)
den exakt selben Assembler-Code erzeugt (die 1. Variante müsste ja eigentlich einen Pointer auf einen Pointer (dyn. Array ist eigentlich ein Pointer) auf die Handles übergeben - macht sie aber nicht)

Zitat von C.Schoch:
If fWaitAll is FALSE, the return value minus WAIT_OBJECT_0 indicates the pHandles array index of the object that satisfied the wait.

Das heist IMO, dass ich immer den Index des Threads, der gerade Zurückgekehrt ist im Handle Array erhalte und das Nützt mir nichts.

Ich hätte halt gerne msgWaitforMultipleObjects um bei jeder Message die GUI zu Aktualisieren. das scheint aber Laut Basilikums Erklärung nicht zu funktionieren
ich fürchte, du wirst nicht vermeiden können, fWaitAll auf false zu setzen und nach jeder Terminierung eines Thread dessen Handle aus dem Thread-Array zu streichen, bis Length(ThreadArray) = 0
bei Result WAIT_OBJECT_0 + Length(ThreadArray) weisst du, dass "nur" eine Nachricht zu bearbeiten ist....
  Mit Zitat antworten Zitat