Multithreading GUI!!
Moderators: Hacker, Stefan2, white
Multithreading GUI!!
Nach Jahren melde ich mich mal wieder zu Wort mit einem Verbesserungsvorschlag.
Ich hatte vor jahren (2006) schon mal diese Vorschläge gebracht:
http://www.ghisler.ch/board/viewtopic.php?t=10347
http://www.ghisler.ch/board/viewtopic.php?t=9402
aber diese haben bisher nicht Ihren Weg in den TC gefunden. ich bin nicht auf dem laufenden, was TC 7.5 angeht, aber mit in der Liste der bestätigten features ist nichts davon.
Als jahrelanger Nutzer, sind meine Festplatten gewachsen und die Datenmengen nehmen immer weiter zu. Das langsamste Medium im PC ist und bleibt die Festplatte. Ich kopiere allerhand Daten von Partition A nach B um mal hier um mal da Platz zu schaffen. Auch kopiere ich von SD Karten und USB Sticks mal hier und mal da was hin.
Die Funktion Strg-L (Speicherplatz auf beiden Partitionen) nutze ich recht häufig und jedes mal könnt ich wirklich k*tzen es gedrückt zu haben. Der TC steht locker für 20 Sekunden still, man kann nichts machen und nach 10 - 30 Sekunden bekomm ich mein Ergebnis.
Ähnlich bei der Suche. Nutz ich die Suche muss ich ne zweite TC Instanz aufmachen um weiter mit meinen Daten arbeiten zu können.
Kopier ich etwas vomUSB Stick (4GB) auf eine Partition und nutze den Queue und möchte auch von Partition C nach D was kopieren kann ich keinen neuen Queue aufmachen sondern stell meine _schnellen_ Dateioperationen hinten an oder nutze eben keinen, schieb es aber dann in den Hintergrund.
Das alles ist sehr unbefriedigend. Wenn ich Dateien lösche gönnt sich Windows XP/TC derzeit ca. 5 Sekunden bis sie denn endlich weg ist. Am auffälligsten ist es, wenn ich Irfanview nutze und kurz das Bild ansehe, es doof finde und löschen möchte, dass ich erstmal in diese 5 Sekunden überlegezeit reingerate.
Das Phänomen trat nun schon bei 4 Rechnern jeweils XP + TC und über 3GHz auf. Ich versteh es nicht.
Am meisten aber nerven mich diE GUI Wartezeiten. Ich habe 2,4GHz Core 2 Duo und bin zum warten verdammt, wenn ich ein paar dateien hin und her bewege oder lösche.
ich habe eine echte Lizenz, ich mag den TC, aber ich muss schauen ob ich das weiterhin ertragen kann. Der Chrome Browser hats für mich vor gemacht. Jeder Tab ist ein eigener Prozess - kein Thread und es geht rasant schnell den Tab zu erstellen bzw. wieder zu killen. Ähnliches will ich auch für "meinen" Dateicommander haben.
Suche, FTP, Archivieren, sämtliche Operationen die auf der HD passieren (Dateibaum erstellen, Indizieren, Löschen, Markieren, ...) bitte in einem anderen Thread/prozess als der der die GUI zeichnet.
Ich will nicht mehr dazu verdammt sein, zu warten, bis die GUI wieder gezeicnet werden darf. Ich will Herr über die Bedienung sein.
Lager bitte alle Operationen in Worker Prozesse aus. Irgendwie.
Dies ist ein Hilferuf! :evil:
Ich hatte vor jahren (2006) schon mal diese Vorschläge gebracht:
http://www.ghisler.ch/board/viewtopic.php?t=10347
http://www.ghisler.ch/board/viewtopic.php?t=9402
aber diese haben bisher nicht Ihren Weg in den TC gefunden. ich bin nicht auf dem laufenden, was TC 7.5 angeht, aber mit in der Liste der bestätigten features ist nichts davon.
Als jahrelanger Nutzer, sind meine Festplatten gewachsen und die Datenmengen nehmen immer weiter zu. Das langsamste Medium im PC ist und bleibt die Festplatte. Ich kopiere allerhand Daten von Partition A nach B um mal hier um mal da Platz zu schaffen. Auch kopiere ich von SD Karten und USB Sticks mal hier und mal da was hin.
Die Funktion Strg-L (Speicherplatz auf beiden Partitionen) nutze ich recht häufig und jedes mal könnt ich wirklich k*tzen es gedrückt zu haben. Der TC steht locker für 20 Sekunden still, man kann nichts machen und nach 10 - 30 Sekunden bekomm ich mein Ergebnis.
Ähnlich bei der Suche. Nutz ich die Suche muss ich ne zweite TC Instanz aufmachen um weiter mit meinen Daten arbeiten zu können.
Kopier ich etwas vomUSB Stick (4GB) auf eine Partition und nutze den Queue und möchte auch von Partition C nach D was kopieren kann ich keinen neuen Queue aufmachen sondern stell meine _schnellen_ Dateioperationen hinten an oder nutze eben keinen, schieb es aber dann in den Hintergrund.
Das alles ist sehr unbefriedigend. Wenn ich Dateien lösche gönnt sich Windows XP/TC derzeit ca. 5 Sekunden bis sie denn endlich weg ist. Am auffälligsten ist es, wenn ich Irfanview nutze und kurz das Bild ansehe, es doof finde und löschen möchte, dass ich erstmal in diese 5 Sekunden überlegezeit reingerate.
Das Phänomen trat nun schon bei 4 Rechnern jeweils XP + TC und über 3GHz auf. Ich versteh es nicht.
Am meisten aber nerven mich diE GUI Wartezeiten. Ich habe 2,4GHz Core 2 Duo und bin zum warten verdammt, wenn ich ein paar dateien hin und her bewege oder lösche.
ich habe eine echte Lizenz, ich mag den TC, aber ich muss schauen ob ich das weiterhin ertragen kann. Der Chrome Browser hats für mich vor gemacht. Jeder Tab ist ein eigener Prozess - kein Thread und es geht rasant schnell den Tab zu erstellen bzw. wieder zu killen. Ähnliches will ich auch für "meinen" Dateicommander haben.
Suche, FTP, Archivieren, sämtliche Operationen die auf der HD passieren (Dateibaum erstellen, Indizieren, Löschen, Markieren, ...) bitte in einem anderen Thread/prozess als der der die GUI zeichnet.
Ich will nicht mehr dazu verdammt sein, zu warten, bis die GUI wieder gezeicnet werden darf. Ich will Herr über die Bedienung sein.
Lager bitte alle Operationen in Worker Prozesse aus. Irgendwie.
Dies ist ein Hilferuf! :evil:
- Herr Mann
- Power Member
- Posts: 574
- Joined: 2004-05-30, 17:11 UTC
- Location: Niedersachsen, Deutschland
Ich fühle mit dir
Ich behelfe mir einfach damit, das ich mehrere Instanzen starte.
Das ist zwar manchmal etwas umständlich, aber es geht wohl nicht "besser"
Teilweise treten hier ja sogar "komische" Effekte auf.
Wenn ich zb. einen kopier/verschiebe Prozess in den Hintergrund schiebe, hängt dieser trotzdem an den Thread "Total Commander 1".
Wenn ich jetzt eine zweiten TC starte, kann ich den ersten nicht schließen, obwohl der Prozess kopieren/verschieben im Hintergrund ist.
Gleiches gilt für das Mulitumbenenntool, die Suche und das Packen mit externen Plugins, wenn ich diese auf habe, habe ich keine Chance als eine neue Instanz zu starten.

Ich behelfe mir einfach damit, das ich mehrere Instanzen starte.
Das ist zwar manchmal etwas umständlich, aber es geht wohl nicht "besser"

Teilweise treten hier ja sogar "komische" Effekte auf.
Wenn ich zb. einen kopier/verschiebe Prozess in den Hintergrund schiebe, hängt dieser trotzdem an den Thread "Total Commander 1".
Wenn ich jetzt eine zweiten TC starte, kann ich den ersten nicht schließen, obwohl der Prozess kopieren/verschieben im Hintergrund ist.
Gleiches gilt für das Mulitumbenenntool, die Suche und das Packen mit externen Plugins, wenn ich diese auf habe, habe ich keine Chance als eine neue Instanz zu starten.
Ich arbeite eben echt viel mit dem TC.
Mein Heim PC ist ein Core 2 Duo E6600 mit 3,5GB RAM, XP Sp3 und irgendwas bei 1+TB HD Speicher.
Mein Laptop ist auch ein Core 2 Duo 2,4GHz Mobile mit 3GB, 320 GB HD und XP Sp3.
Derzeit nervt mich jegliche Wartezeit und im Dateimanager nervts mich derzeit echt am meisten. Wenn ich ein fettes Verzeichnis (z.B. über 10GB Daten [man ahnt ja nicht was auch mit legalen (!!) Downloads an Datenmengen zusammen kommen kann]) kopieren möchte, dann wird erstmal Pause gemacht, da erst mal daten gesammelt werden für den progress Bar. Ich will den Progessbar nicht missen. Aber mir wär lieber wenn hier ein anderer Ansatz gewählt werden würde.
Von mir aus könnte es schon mal los gehen und der Progressbarthread sammelt im Hintergrund die Daten zusammen für die finale Größe. Ändert sich die Prozentzahl eben beim kopieren, bewegen noch. Das ist dann eher eine Frage der GUI. Wenn unter dem Progressbar etwas erklärendes steht wie "12324 Dateien gefunden" und die Zahl geht weiter nach oben, dann kann ich mir als intelligenter mensch ausrechnen, dass dan auch die Prozente sich noch mal anpassen.
Eine andere idee wäre, wenn Dialoge generell auch als "Queue-Tab" übgesetzt werden könnten, so dann ein globaler Tab quasi den Dialog zu dem Vorgang enthält. Ich kann da hin wechseln, mir den Fortschritt ansehen, ihn abbrechen, anhalten etc. Im "Dateimanager-Tab" könnte ich dann ganz normal weiter arbeiten.
Oder die verzeichnisse auf die ich die Operation ausführen möchte werden IM Tc geblockt, kursiv dargestellt, bekommen IN der Zeile, ne saduhr oder "in Bearbeitung".
Mir egal was, aber blockier nicht meinen Arbeitsfluss.
Noch mal zu den Instanzen. ich mags eigentlich nicht, dass ich mehrere Instanzen vom TC nutzen muss. Ich machs hin und wieder, aber mit einer _besseren_ GUI und mehr Prozessen sollte das nicht nötig sein.
Mein Heim PC ist ein Core 2 Duo E6600 mit 3,5GB RAM, XP Sp3 und irgendwas bei 1+TB HD Speicher.
Mein Laptop ist auch ein Core 2 Duo 2,4GHz Mobile mit 3GB, 320 GB HD und XP Sp3.
Derzeit nervt mich jegliche Wartezeit und im Dateimanager nervts mich derzeit echt am meisten. Wenn ich ein fettes Verzeichnis (z.B. über 10GB Daten [man ahnt ja nicht was auch mit legalen (!!) Downloads an Datenmengen zusammen kommen kann]) kopieren möchte, dann wird erstmal Pause gemacht, da erst mal daten gesammelt werden für den progress Bar. Ich will den Progessbar nicht missen. Aber mir wär lieber wenn hier ein anderer Ansatz gewählt werden würde.
Von mir aus könnte es schon mal los gehen und der Progressbarthread sammelt im Hintergrund die Daten zusammen für die finale Größe. Ändert sich die Prozentzahl eben beim kopieren, bewegen noch. Das ist dann eher eine Frage der GUI. Wenn unter dem Progressbar etwas erklärendes steht wie "12324 Dateien gefunden" und die Zahl geht weiter nach oben, dann kann ich mir als intelligenter mensch ausrechnen, dass dan auch die Prozente sich noch mal anpassen.
Eine andere idee wäre, wenn Dialoge generell auch als "Queue-Tab" übgesetzt werden könnten, so dann ein globaler Tab quasi den Dialog zu dem Vorgang enthält. Ich kann da hin wechseln, mir den Fortschritt ansehen, ihn abbrechen, anhalten etc. Im "Dateimanager-Tab" könnte ich dann ganz normal weiter arbeiten.
Oder die verzeichnisse auf die ich die Operation ausführen möchte werden IM Tc geblockt, kursiv dargestellt, bekommen IN der Zeile, ne saduhr oder "in Bearbeitung".
Mir egal was, aber blockier nicht meinen Arbeitsfluss.
Noch mal zu den Instanzen. ich mags eigentlich nicht, dass ich mehrere Instanzen vom TC nutzen muss. Ich machs hin und wieder, aber mit einer _besseren_ GUI und mehr Prozessen sollte das nicht nötig sein.
Bestes Beispiel, wo GUI und Operation getrennt werden sollte: BTM!!! Wenn z.B. ein DL läuft und man die (größere) Liste bearbeiten möchte, dann macht das absolut keinen Spaß, da etwas zu löschen oder hinzuzufügen.. ghisler hat mal irgendwo geschrieben, dass er die Message-Queue öfter aufrufen könnte um die GUI-Messages abzurufen... Allerdings is das auch nur ein Workaround... Denn diese Aktionen sollten nicht im GUI-Prozess laufen, sondern separat. Hatte ich damals auch vorgeschlagen, jedoch keine Reaktion erhalten, iirc.
Gruß
CoolWater
Gruß
CoolWater
-
- Junior Member
- Posts: 21
- Joined: 2003-02-28, 10:45 UTC
... aber vielleicht könnte man das häppchenweise Implementieren?!Hacker wrote:Wäre wahrscheinlich schwieriger als Unicode einzubauen.
Roman
Die stellen wo man am längsten wartet zuerst.
Mir würde da zuerst der sftp up-/download am Herzen liegen (wo
es nun zum Glück das sftp Beta-Plugin gibt)
vg
Peter
Peter Franz,
So in etwa ginge auch das Multithreading (oder wie man das nennen will). Fürs SFTP Plugin ja, aber für nichts anderes, erst später? Müsste man die ganze Plugin Schnittstelle umkrempeln. Dann würden leute fragen, wieso das mit dem Plugin geht und mit anderen (oben erwähnten) Sachen nicht. Dann würden dazwischen noch andere Features implementiert werden. Sollen die Multithreaded sein oder nicht?
Ist halt nicht so einfach. Nicht alles auf einmal, und schon gar nicht häppchenweise. Bin zwar zweifellos dafür, sehe das aber als nicht all zu realistisch.
Roman
Kannst du dir sowas vorstellen? Wie könnte man Unicode häppchenweise implementieren? Für den Lister ja, aber für die Dateilisten nicht? Oder andersrum? Oder fürs Umbenennen schon, aber nicht fürs Kopieren?aber vielleicht könnte man das häppchenweise Implementieren?
So in etwa ginge auch das Multithreading (oder wie man das nennen will). Fürs SFTP Plugin ja, aber für nichts anderes, erst später? Müsste man die ganze Plugin Schnittstelle umkrempeln. Dann würden leute fragen, wieso das mit dem Plugin geht und mit anderen (oben erwähnten) Sachen nicht. Dann würden dazwischen noch andere Features implementiert werden. Sollen die Multithreaded sein oder nicht?
Ist halt nicht so einfach. Nicht alles auf einmal, und schon gar nicht häppchenweise. Bin zwar zweifellos dafür, sehe das aber als nicht all zu realistisch.
Roman
Mal angenommen, du drückst Strg+F, wählst die FTP-Verbindung (mit gespeichertem Passwort), klickst aber nicht auf Verbinden, sondern fällst tot um.
- Herr Mann
- Power Member
- Posts: 574
- Joined: 2004-05-30, 17:11 UTC
- Location: Niedersachsen, Deutschland
Man muss sich erst einmal klar sein, was man denn "herauslösen" will und kann. Daher denke ich doch, das man klein anfangen kann.
Mir fallen da so gleich ein paar Dinge ein.
- Mehrfachumbenenntool
- Suche
- Dateien aufspalten/zusammenfügen
Könnte man diese nicht einfach in externen Programme auslagern, wo der TC dann nur die Parameter übergibt?
Einfaches Beispiel:
Den Lister gibt es auch als Einzelanwendung.
Wenn ich diesen als "internen Viewer mit Datei unter Cursor" starte und den TC schließe, wird der Lister mit geschlossen.
Stelle ich aber auf "externen Viewer" und wähle hier Lister.exe aus, sind diese beiden Prozesse getrennt.
Mir fallen da so gleich ein paar Dinge ein.
- Mehrfachumbenenntool
- Suche
- Dateien aufspalten/zusammenfügen
Könnte man diese nicht einfach in externen Programme auslagern, wo der TC dann nur die Parameter übergibt?
Einfaches Beispiel:
Den Lister gibt es auch als Einzelanwendung.
Wenn ich diesen als "internen Viewer mit Datei unter Cursor" starte und den TC schließe, wird der Lister mit geschlossen.
Stelle ich aber auf "externen Viewer" und wähle hier Lister.exe aus, sind diese beiden Prozesse getrennt.
Sehr gute Idee, die "Power Tools" aus der Main EXE rauszulösen...
Bitte umbedingt auch das Sync-Tool! Das Sync-Tool ist eindeutig das beste mir bekannte für manuelle Sync-Vorgänge (für automatisiert im Hintergrund hab ich eh was anderes im Einsatz). Es nervt aber gewaltig, dass ich zum Weiterarbeiten eine neue Instanz des TC starten muss, weil der gerade angestoßene Sync-Prozess das Hauptfenster für die nächste halbe Stunde lahmlegt...
Ich sehe eigentlich auch keine Notwendigkeit, das alles in der Hauptanwendung zu machen (wird doch schließlich nur noch komplizierter dadurch...), oder hat das einen technischen Hintergrund der sich mir nicht erschließt?
kleines Beispiel am Rande, beim Konkurrenzprodukt SpeedCommander ist das so gelöst - Suche, Viewer und Sync-Tool sind hier eigene EXEs und bekommen von der Hauptanwendung nur Parameter übergeben.
Bitte umbedingt auch das Sync-Tool! Das Sync-Tool ist eindeutig das beste mir bekannte für manuelle Sync-Vorgänge (für automatisiert im Hintergrund hab ich eh was anderes im Einsatz). Es nervt aber gewaltig, dass ich zum Weiterarbeiten eine neue Instanz des TC starten muss, weil der gerade angestoßene Sync-Prozess das Hauptfenster für die nächste halbe Stunde lahmlegt...
Ich sehe eigentlich auch keine Notwendigkeit, das alles in der Hauptanwendung zu machen (wird doch schließlich nur noch komplizierter dadurch...), oder hat das einen technischen Hintergrund der sich mir nicht erschließt?
kleines Beispiel am Rande, beim Konkurrenzprodukt SpeedCommander ist das so gelöst - Suche, Viewer und Sync-Tool sind hier eigene EXEs und bekommen von der Hauptanwendung nur Parameter übergeben.
-
- Junior Member
- Posts: 21
- Joined: 2003-02-28, 10:45 UTC
... meinte auch NICHT die Unicode-Umstellung - sondern die
Verlagerung mancher Operationen in den Hintergrund - die
eben besonders lange dauern können.
Beim normalen FTP gibts z.B. die schöne Option im Hintergrund
senden - beim SFTP leider nicht.
vg
Peter
Verlagerung mancher Operationen in den Hintergrund - die
eben besonders lange dauern können.
Beim normalen FTP gibts z.B. die schöne Option im Hintergrund
senden - beim SFTP leider nicht.
vg
Peter
Hacker wrote:Peter Franz,Kannst du dir sowas vorstellen? Wie könnte man Unicode häppchenweise implementieren? Für den Lister ja, aber für die Dateilisten nicht? Oder andersrum? Oder fürs Umbenennen schon, aber nicht fürs Kopieren?aber vielleicht könnte man das häppchenweise Implementieren?
So in etwa ginge auch das Multithreading (oder wie man das nennen will). Fürs SFTP Plugin ja, aber für nichts anderes, erst später? Müsste man die ganze Plugin Schnittstelle umkrempeln. Dann würden leute fragen, wieso das mit dem Plugin geht und mit anderen (oben erwähnten) Sachen nicht. Dann würden dazwischen noch andere Features implementiert werden. Sollen die Multithreaded sein oder nicht?
Ist halt nicht so einfach. Nicht alles auf einmal, und schon gar nicht häppchenweise. Bin zwar zweifellos dafür, sehe das aber als nicht all zu realistisch.
Roman