AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign System.Threading => mehrere Threads gleichzeitig ??
Thema durchsuchen
Ansicht
Themen-Optionen

System.Threading => mehrere Threads gleichzeitig ??

Ein Thema von mm1256 · begonnen am 28. Sep 2015 · letzter Beitrag vom 1. Okt 2015
Antwort Antwort
Seite 2 von 2     12   
TiGü
Online

Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
 
Delphi 10.4 Sydney
 
#11

AW: System.Threading => mehrere Threads gleichzeitig ??

  Alt 29. Sep 2015, 10:33
Aber auf die Tasks zu warten scheint auch nicht gewünscht zu sein.
Zumindest bei mir hängt das Testprogramm beim Beenden, wenn noch Tasks abzuarbeiten sind (Infinite timeout).

Wenn ich beim TTask.WaitForAll einen Timeout von einigen Sekunden angebe, dann muss in TaskHasFinished() noch ein if not FShutdown then um den Code, weil es sonst beim Zugriff des TMonitors auf den schon freigebenden FSync knallt.

Oder wie wäre es besser/richtig?
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

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

AW: System.Threading => mehrere Threads gleichzeitig ??

  Alt 29. Sep 2015, 11:07
Richtiger wäre es mit folgender Änderung:
Delphi-Quellcode:
function TMainForm.CreateProc( const AID: string ): TProc;
begin
  Result :=
    procedure
    begin
      Log( AID + ' started' );
      try
        Sleep( 1000 );
      finally
        Log( AID + ' finished' );
      end;
    end;
end;

procedure TMainForm.Log( const AMsg: string );
begin
  if csDestroying in ComponentState
  then
    Exit;
  TThread.Synchronize( nil,
    procedure
    begin
      ListBox1.ItemIndex := ListBox1.Items.Add( AMsg );
    end );
end;
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
mm1256

Registriert seit: 10. Feb 2014
Ort: Wackersdorf, Bayern
640 Beiträge
 
Delphi 10.1 Berlin Professional
 
#13

AW: System.Threading => mehrere Threads gleichzeitig ??

  Alt 29. Sep 2015, 11:26
Hallo,

ich habe das Zippen mittlerweile auf TThread umgestellt. Die TTask-Variante ist ja Unsinn für dieses Vorhaben. Es läuft auch weitgehend problemlos. Nur mit der Fortschrittanzeige bei einzelnen Threads hab ich noch etwas Schwierigkeiten. Es funktioniert aber, und somit könnte es auch ein Problem mit ZipForge sein.

Im Lauf des Tages werde ich die aktuelle Version mal posten. Soll es als gezippte Datei sein (pas+dfm)?
Gruss Otto
Wenn du mit Gott reden willst, dann bete.
Wenn du ihn treffen willst, schreib bei Tempo 220 eine SMS
  Mit Zitat antworten Zitat
TiGü
Online

Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
 
Delphi 10.4 Sydney
 
#14

AW: System.Threading => mehrere Threads gleichzeitig ??

  Alt 29. Sep 2015, 11:30
Richtiger wäre es mit folgender Änderung:
Jetzt ist es stimmig.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

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

AW: System.Threading => mehrere Threads gleichzeitig ??

  Alt 29. Sep 2015, 14:18
Richtiger wäre es mit folgender Änderung:
Jetzt ist es stimmig.
Darum sollte der TE sich ja auch den Source vom Background-Worker anschauen.

Ich verwende auch nicht alles stumpf was ich so finde, bin aber immer neugierig auf den Lösungsweg und die einzelnen Detail-Lösungen.
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
mm1256

Registriert seit: 10. Feb 2014
Ort: Wackersdorf, Bayern
640 Beiträge
 
Delphi 10.1 Berlin Professional
 
#16

AW: System.Threading => mehrere Threads gleichzeitig ??

  Alt 29. Sep 2015, 18:08
Ich verwende auch nicht alles stumpf was ich so finde, bin aber immer neugierig auf den Lösungsweg und die einzelnen Detail-Lösungen.
Genauso handhabe ich das auch. Jede Zeile Quellcode in allen meinen Sourcen möchte ich auch vollständig verstehen. Da geht gar nichts mit Copy&Paste von irgendwelchen Beispielen, die dann laufen, und ich weiß nicht warum. Das muss auch so sein, denn wenn ich ein Problem habe, muss ich es selber lösen können. Denn, ich hab keinen Cheffe den ich fragen kann.

In Bezug auf den Background-Worker heißt das: Hab noch nicht durchschaut wie das Teil arbeitet, also ignoriere ich es vorerst, weil mir der Lernaufwand in Relation zu den Wünschen (nicht Anforderungen) die ich bzw. meine Kunden haben haben, momentan (noch) nicht gerechtfertigt ist. Als Einzelkämpfer muss ich mir meine Zeit sehr genau einteilen. Darum bitte nicht falsch verstehen.

Anbei nun das kleine Projekt. Wer noch Fehler findet, bitte mitteilen. Ansonsten muss man ja für den Fall, dass man ZipForge nicht hat, nur den kleinen Teil des Zippers austauschen, und hat eine kleine Backup-Lösung für die schnelle Sicherung zwischendurch. Bei mir ist es gerade mit ~23 GB an ZIP-Dateien durch gelaufen. Am Anfang läuft es ziemlich flott los, aber wenn der HDD-Cache mal voll ist, wird es natürlich langsamer.
Angehängte Dateien
Dateityp: zip ZipTool.zip (9,1 KB, 22x aufgerufen)
Gruss Otto
Wenn du mit Gott reden willst, dann bete.
Wenn du ihn treffen willst, schreib bei Tempo 220 eine SMS
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.143 Beiträge
 
Delphi 10.3 Rio
 
#17

AW: System.Threading => mehrere Threads gleichzeitig ??

  Alt 1. Okt 2015, 00:55
Die TTask-Variante ist ja Unsinn für dieses Vorhaben.
Warum das? Ich hab das "auch" über ein TTask gemacht... Ich durchsuche die Festplatte und erzeuge irgend etwas zwischen 1000 und 1500 TTask's...

Die schlummern dann alle erstmal in der Thread.Queue und es werden immer so viele Worker gestartet wie der Rechner Kerne und CPU Auslastung hat... Eben nach der Automatik der Library...

Bingo...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz