Multithread und/oder wie organisiert ihr den Zugriff auf DBFs
Moderator: Moderatoren
- sherlogg
- UDF-Programmierer
- Beiträge: 57
- Registriert: Mo, 19. Nov 2012 14:59
- Wohnort: Mühlheim am Main
- Hat sich bedankt: 15 Mal
- Danksagung erhalten: 1 Mal
- Kontaktdaten:
Multithread und/oder wie organisiert ihr den Zugriff auf DBFs
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
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
- Jan
- Marvin
- Beiträge: 14662
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Multithread und/oder wie organisiert ihr den Zugriff auf DBFs
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
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
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9394
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 105 Mal
- Danksagung erhalten: 364 Mal
- Kontaktdaten:
Re: Multithread und/oder wie organisiert ihr den Zugriff auf DBFs
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.
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.
Herzlich,
Tom
Tom
- sherlogg
- UDF-Programmierer
- Beiträge: 57
- Registriert: Mo, 19. Nov 2012 14:59
- Wohnort: Mühlheim am Main
- Hat sich bedankt: 15 Mal
- Danksagung erhalten: 1 Mal
- Kontaktdaten:
Re: Multithread und/oder wie organisiert ihr den Zugriff auf DBFs
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
- sherlogg
- UDF-Programmierer
- Beiträge: 57
- Registriert: Mo, 19. Nov 2012 14:59
- Wohnort: Mühlheim am Main
- Hat sich bedankt: 15 Mal
- Danksagung erhalten: 1 Mal
- Kontaktdaten:
Re: Multithread und/oder wie organisiert ihr den Zugriff auf DBFs
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.
- Jan
- Marvin
- Beiträge: 14662
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Multithread und/oder wie organisiert ihr den Zugriff auf DBFs
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
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
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- sherlogg
- UDF-Programmierer
- Beiträge: 57
- Registriert: Mo, 19. Nov 2012 14:59
- Wohnort: Mühlheim am Main
- Hat sich bedankt: 15 Mal
- Danksagung erhalten: 1 Mal
- Kontaktdaten:
Re: Multithread und/oder wie organisiert ihr den Zugriff auf DBFs
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
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
- Manfred
- Foren-Administrator
- Beiträge: 21248
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 211 Mal
- Danksagung erhalten: 71 Mal
Re: Multithread und/oder wie organisiert ihr den Zugriff auf DBFs
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.
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.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9394
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 105 Mal
- Danksagung erhalten: 364 Mal
- Kontaktdaten:
Re: Multithread und/oder wie organisiert ihr den Zugriff auf DBFs
Wir brauchen endlich einen "Gefällt mir"-Button im Forum.
Herzlich,
Tom
Tom
- Manfred
- Foren-Administrator
- Beiträge: 21248
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 211 Mal
- Danksagung erhalten: 71 Mal
Re: Multithread und/oder wie organisiert ihr den Zugriff auf DBFs
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.
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.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- sherlogg
- UDF-Programmierer
- Beiträge: 57
- Registriert: Mo, 19. Nov 2012 14:59
- Wohnort: Mühlheim am Main
- Hat sich bedankt: 15 Mal
- Danksagung erhalten: 1 Mal
- Kontaktdaten:
Re: Multithread und/oder wie organisiert ihr den Zugriff auf DBFs
Auch wenn ein "Gefällt-Button" heutzutage mehr als inflationär benutzt wird ... in diesem Forum wäre er angebracht
LG, Dieter
- Manfred
- Foren-Administrator
- Beiträge: 21248
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 211 Mal
- Danksagung erhalten: 71 Mal
Re: Multithread und/oder wie organisiert ihr den Zugriff auf DBFs
so, jetzt könnt ihr euch verlustigen damit.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Bertram Hansen
- Foren-Moderator
- Beiträge: 1024
- Registriert: Di, 27. Sep 2005 8:55
- Wohnort: 51379 Leverkusen
- Hat sich bedankt: 28 Mal
- Danksagung erhalten: 20 Mal
- Kontaktdaten:
Re: Multithread und/oder wie organisiert ihr den Zugriff auf DBFs
Manfred,
wieso nur 3 mikrige Sterne
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.
wieso nur 3 mikrige Sterne
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.
Gruß Bertram
http://www.tobax.de
Mitglied der XUG Cologne
Mitglied der XUG Osnabrück
Beisitzer des Deutschsprachige Xbase-Entwickler e.V.
Solange Kakaobohnen an Bäumen wachsen ist Schokolade Obst!
- brandelh
- Foren-Moderator
- Beiträge: 15710
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 73 Mal
- Danksagung erhalten: 38 Mal
- Kontaktdaten:
Re: Multithread und/oder wie organisiert ihr den Zugriff auf DBFs
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 ?
Ich sehe nur "Gefällt mir" Auswahl ... zählt der auch die lesenden ohne "Gefällt mir" und berechnet die Quote ?
Gruß
Hubert
Hubert
- Koverhage
- Der Entwickler von "Deep Thought"
- Beiträge: 2471
- Registriert: Fr, 23. Dez 2005 8:00
- Wohnort: Aalen
- Hat sich bedankt: 104 Mal
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
Re: Multithread und/oder wie organisiert ihr den Zugriff auf DBFs
Nach der Formel Gutdünken
Gruß
Klaus
Klaus
- Hans Zethofer
- Rekursionen-Architekt
- Beiträge: 278
- Registriert: Fr, 27. Jan 2006 8:29
- Wohnort: 2700 Wiener Neustadt
- Hat sich bedankt: 1 Mal
- Kontaktdaten:
Re: Multithread und/oder wie organisiert ihr den Zugriff auf DBFs
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.
Du kannst das aber auch wieder zurücknehmen, dann reduziert sich das ganze wieder.
_____________
lg
Hans
lg
Hans
- Hans Zethofer
- Rekursionen-Architekt
- Beiträge: 278
- Registriert: Fr, 27. Jan 2006 8:29
- Wohnort: 2700 Wiener Neustadt
- Hat sich bedankt: 1 Mal
- Kontaktdaten:
Re: Multithread und/oder wie organisiert ihr den Zugriff auf DBFs
Warum erscheint bei meinem letzten Post kein "Daumen hoch"?
_____________
lg
Hans
lg
Hans
- Manfred
- Foren-Administrator
- Beiträge: 21248
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 211 Mal
- Danksagung erhalten: 71 Mal
Re: Multithread und/oder wie organisiert ihr den Zugriff auf DBFs
bei Deinem Eigenen? Eigenlob stinkt.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Hans Zethofer
- Rekursionen-Architekt
- Beiträge: 278
- Registriert: Fr, 27. Jan 2006 8:29
- Wohnort: 2700 Wiener Neustadt
- Hat sich bedankt: 1 Mal
- Kontaktdaten:
Re: Multithread und/oder wie organisiert ihr den Zugriff auf DBFs
ok - das heisst - Fremde sehen es ... dann passt es
_____________
lg
Hans
lg
Hans