Seite 1 von 1

Multithread und/oder wie organisiert ihr den Zugriff auf DBFs

Verfasst: Di, 26. Mai 2020 12:27
von sherlogg
Hallo Zusammen,

ich habe mich dazu entschlossen, ein eigen genutztes Clipper-Programm (mehrmals die Woche) auf GUI umzuschreiben. Das mache ich aktuell mit VxH. Nun bin ich sicher kein OOP Crack, aber eigentlich auch kein blutiger Anfänger mehr (ohne euch mit meiner Vita zu strapazieren, habe ich mit Clipper schon 1986 gearbeitet und mit XBase++ und VxH habe ich auch schon etwas gemacht).

Nun ist es ja so, dass es, um DBFs innerhalb des Programmes adäquat zu öffnen, ein anderes Vorgehen zu beachten gibt (zumindest sehe ich das aktuell so).

Beispiel
Ich öffne in einem Programmteil "Grunddaten" eine Parameter.dbf (mit einer dazu gehörenden DBT). Wenn ich nun diesen Programmteil nochmals starte, kommen sich die Satzzeiger ins Gehege. Nun habe ich natürlich schon einige Ideen (mehr oder weniger aufwändig), um die Zugriffe zu organisieren, aber vielleicht übersehe ich ein elementares Vorgehen.

Wie organisiert ihr Zugriffe auf eure DBFs? Ist Threading das Geheimnis?

Ich hoffe, mein Anliegen ist nicht zu weit unter eurem Niveau.

LG, Dieter

Re: Multithread und/oder wie organisiert ihr den Zugriff auf DBFs

Verfasst: Di, 26. Mai 2020 12:48
von Jan
Dieter,

VxH: Ist das harbour? Kenne ich mich nicht mit aus, dürfte aber sehr anders laufen als in Xbase++. Wenn das wirklich harbour ist sollte das Thema besser in das entsprechende Unterforum verschoben werden damit jeder weiß, worüber wir reden. Und da nichts durcheinander wirbelt.

Jan

Re: Multithread und/oder wie organisiert ihr den Zugriff auf DBFs

Verfasst: Di, 26. Mai 2020 12:52
von Tom
Hallo, Dieter.

Wenn Du dieselbe Tabelle in unterschiedlichen Modulen öffnest, kommen sich die Satzzeiger ohnehin nicht ins Gehege, denn jede Workarea verwaltet ihre Pointer selbst. Wenn ich also KUNDEN.DBF in Modul A und in Modul B (unter verschiedenen Aliasen) geöffnet habe, kommen die sich nicht ins Gehege. Anders wäre das nur, wenn Du alle Tabellen einmalig bei Programmstart öffnest, wie das zu Clipper-Zeiten oft gemacht wurde, und dann in verschiedenen Modulen in den Workareas herumstocherst. Der Pointer, den Du auf diese Weise an einer Stelle bewegst, bewegt sich für die andere mit. Es ist dieselbe Workarea. Schritt eins wäre also, Tabellen jeweils im Modul zu öffnen, nicht global.

Schritt zwei bringt Zusatzbenefit. Wenn Du Module in Threads laufen lässt, sind die Workareas gekapselt. Das heißt, dass es sich verhält, als würdest Du das an unterschiedlichen Arbeitsplätzen tun oder die App mehrfach auf einem Arbeitsplatz öffnen. Code, der in einem Thread läuft, verhält sich fast wie eine eigene Programminstanz, einfach gesagt. Das heißt, dass man sogar dieselbe Tabelle unter dem selben Alias mehrfach öffnen kann, indem man Modul A mehrfach startet (oder in Modul B den selben Alias verwendet), denn die sehen sich nicht. Workareas sind threadlokal. USE KUNDEN ALIAS "kunden" NEW kann auf diese Weise beliebig oft ausgeführt werden, solange es jeweils in einem neuen Thread geschieht. Du kannst Deinen Anwendern auf diese Weise die Möglichkeit bieten, z.B. eine Kundenverwaltung mit allen Funktionalitäten mehrfach aufzurufen, ohne dass sich etwas beharkt.

Also. 1. (Pflicht): Tabellen nicht global öffnen, sondern im Modul, und beim Beenden schließen. 2. (Kür): Module in Threads laufen lassen.

Re: Multithread und/oder wie organisiert ihr den Zugriff auf DBFs

Verfasst: Di, 26. Mai 2020 12:58
von sherlogg
Jan hat geschrieben: Di, 26. Mai 2020 12:48 Dieter,

VxH: Ist das harbour?

Jan
Hallo Jan,

VxH ist Visual xHarbour und die Datenbankzugriff sind dort genauso geregelt, wie es unter Clipper der Fall war und wie es auch unter XBase++ durchgeführt werden kann.

Aber ich habe natürlich nichts gegen eine Verschiebung des Themas.

Gruß, Dieter

Re: Multithread und/oder wie organisiert ihr den Zugriff auf DBFs

Verfasst: Di, 26. Mai 2020 13:00
von sherlogg
Tom hat geschrieben: Di, 26. Mai 2020 12:52 Hallo, Dieter.

...

Also. 1. (Pflicht): Tabellen nicht global öffnen, sondern im Modul, und beim Beenden schließen. 2. (Kür): Module in Threads laufen lassen.
Hallo Tom,

vielen Dank für Deine umfangreichen Auführungen.

LG, Dieter

P.S. ich öffnen nicht global (war ich nie ein Freund von), sondern immer nur explizit im Programmteil.

Re: Multithread und/oder wie organisiert ihr den Zugriff auf DBFs

Verfasst: Di, 26. Mai 2020 13:05
von Jan
Hallo Dieter,

da ich harbour nicht kenne weiß ich nicht, ob der mit den dbf genau so umgeht wie Clipper oder Xbase++. Die haben ja auch ein ganz anderes Datenbanktreiber-Modell. Und bei den Threads weiß ich überhaupt nicht, wie das dort läuft.

Ansonsten kann ich nur unterstreichen, was Tom sehr ausführlich und eindeutig geschrieben hat. Ich selber arbeite da grundsätzlich mit Alias-Zugriffen, um das sauber zu regeln. Und in Threads ist das ohnehin anders (unter Xbase++, Clipper kannte das ja noch nicht). Wobei ich unter Threads inzwischen nicht mehr grundsätzlich beim Beenden des Threads die dbf alle schließe. Sondern im nächsten Durchlauf schaue, ob die schon geöffnet sind. Spart viel Öffnen und Schließen, wenn in dem Thread ohnehin immer das Gleiche passiert.

Jan

Re: Multithread und/oder wie organisiert ihr den Zugriff auf DBFs

Verfasst: Mi, 27. Mai 2020 8:31
von sherlogg
Hallo Zusammen,

nochmals vielen Dank für die Antworten. Ich bin ein gutes Stück weiter gekommen.

Ich bin eigentlich kein Mensch, der sehr schnell den Honigtopf zur Hand nimmt, aber ich muss euch auch mal sagen, dass dies hier ein wirklich gutes Forum ist (ich lese auch im stillen sehr häufig mit). Egal was für eine Frage gestellt wird, man hat immer den Eindruck das man ernst genommen wird. Keine herablassenden Bemerkungen. Das ist in der heutigen Zeit sehr selten geworden.

Also nochmals Danke.

LG, Dieter

Re: Multithread und/oder wie organisiert ihr den Zugriff auf DBFs

Verfasst: Mi, 27. Mai 2020 8:39
von Manfred
Hallo Dieter,
und wenn Du irgendwann mal das Glück hast zu den jährlichen Treffen zu kommen, dann erlebst Du auch noch einen großen Teil der Leute hier live und amüsierst Dich auch noch kräftig.

Re: Multithread und/oder wie organisiert ihr den Zugriff auf DBFs

Verfasst: Mi, 27. Mai 2020 10:11
von Tom
Wir brauchen endlich einen "Gefällt mir"-Button im Forum. :wink:

Re: Multithread und/oder wie organisiert ihr den Zugriff auf DBFs

Verfasst: Mi, 27. Mai 2020 10:20
von Manfred
HI Tom,
das war immer schon Thema, aber irgendwas war da noch in Sachen Inkompabilitäten weswegen wir das seiner Zeit nicht weiter verfolgt haben. Aber vielleicht hat sich das schon erledigt. Ich denke wir werden das nochmal prüfen.

Re: Multithread und/oder wie organisiert ihr den Zugriff auf DBFs

Verfasst: Mi, 27. Mai 2020 10:43
von sherlogg
Manfred hat geschrieben: Mi, 27. Mai 2020 10:20 HI Tom,
das war immer schon Thema, aber irgendwas war da noch in Sachen Inkompabilitäten weswegen wir das seiner Zeit nicht weiter verfolgt haben. Aber vielleicht hat sich das schon erledigt. Ich denke wir werden das nochmal prüfen.
Auch wenn ein "Gefällt-Button" heutzutage mehr als inflationär benutzt wird ... in diesem Forum wäre er angebracht :)

LG, Dieter

Re: Multithread und/oder wie organisiert ihr den Zugriff auf DBFs

Verfasst: Mi, 27. Mai 2020 11:39
von Manfred
so, jetzt könnt ihr euch verlustigen damit.

Re: Multithread und/oder wie organisiert ihr den Zugriff auf DBFs

Verfasst: Do, 28. Mai 2020 9:24
von Bertram Hansen
Manfred,

wieso nur 3 mikrige Sterne :-k

Ach ja und wenn wir gerade schon bei den Wünschen sind. Eine größere Auswahl an den Smilies, Emoji oder Stickern wäre auch nicht schlecht. :blob8:

Re: Multithread und/oder wie organisiert ihr den Zugriff auf DBFs

Verfasst: Do, 28. Mai 2020 10:48
von brandelh
wie kommen die Sterne zu Stande ?
Ich sehe nur "Gefällt mir" Auswahl ... zählt der auch die lesenden ohne "Gefällt mir" und berechnet die Quote ?

Re: Multithread und/oder wie organisiert ihr den Zugriff auf DBFs

Verfasst: Do, 28. Mai 2020 11:59
von Koverhage
Nach der Formel Gutdünken ;-)

Re: Multithread und/oder wie organisiert ihr den Zugriff auf DBFs

Verfasst: Do, 28. Mai 2020 12:24
von Hans Zethofer
Jedes "Daumen hoch" erhöht die %-Zahl und dadurch auch die Sterne.
Du kannst das aber auch wieder zurücknehmen, dann reduziert sich das ganze wieder.

Re: Multithread und/oder wie organisiert ihr den Zugriff auf DBFs

Verfasst: Do, 28. Mai 2020 12:31
von Hans Zethofer
Warum erscheint bei meinem letzten Post kein "Daumen hoch"?

Re: Multithread und/oder wie organisiert ihr den Zugriff auf DBFs

Verfasst: Do, 28. Mai 2020 12:35
von Manfred
bei Deinem Eigenen? Eigenlob stinkt. :badgrin:

Re: Multithread und/oder wie organisiert ihr den Zugriff auf DBFs

Verfasst: Do, 28. Mai 2020 12:36
von Hans Zethofer
ok :D - das heisst - Fremde sehen es ... dann passt es