Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: TParallel for: wie Schleife abbrechen?

  Alt 21. Nov 2014, 22:30
Ja, da gibt es doch ein Break (mir war doch auch so )
Delphi-Quellcode:
procedure Foo;
var
  LValue: Integer;
begin
  LValue := 0;
  TParallel.&For( 1, 1000,
      procedure( L: Integer; S: TParallel.TLoopState )
    begin
      if not S.ShouldExit
      then
        begin
          Inc( LValue );
          if L = 500
          then
            S.Break;
        end;
    end );
  Writeln( LValue );
end;
Da wird auf jeden Fall früher abgebrochen, allerdings laufen ein paar Tasks noch durch die Schleife. Sieht man schön, wenn man das ausführt
Delphi-Quellcode:
procedure Foo;
var
  LValue: Integer;
begin
  LValue := 0;
  TParallel.&For( 1, 1000,
      procedure( L: Integer; S: TParallel.TLoopState )
    begin
// if not S.ShouldExit
// then
// begin
          Inc( LValue );
          if L = 500
          then
            S.Break;
// end;
    end );
  Writeln( LValue );
end;
Bei mir kommt dann regelmäßig 529 heraus.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat