Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi CurrentThread in Delphi (https://www.delphipraxis.net/101266-currentthread-delphi.html)

Funky-Sepp 11. Okt 2007 13:10

Re: CurrentThread in Delphi
 
@OregonGhost

ruf Enter und Leave ziemlich oft auf.

Hab aber nun rausgefunden dass dies wohl nicht am Enter und Leave liegen kann das es einfach zufällig mal länger mal nicht so lange dauert.

Zudem brauche ich nun das Thread-Objekt auch nicht mehr. Da ich dazu nun eine anderen weg gegangen bin.

Muetze1 11. Okt 2007 14:32

Re: CurrentThread in Delphi
 
Das klingt eher danach, als dass durch das häufige Enter/leave der Thread mal auf das Enter'n warten muss, weil wer anders dies auch gerade macht. Da ist eher eine Überschneidung vermutbar..

Funky-Sepp 11. Okt 2007 14:51

Re: CurrentThread in Delphi
 
Eine überschneidung kann eigentlich nicht sein, da dies auch passiert wenn nur ein Thread daran arbeitet.

sirius 11. Okt 2007 14:56

Re: CurrentThread in Delphi
 
Was muss den synchronisiert werden. Manchmal hilft auch eine einfache Message

(btw. Synchronize von TThread arbeitet zwar mit criticalSection, aber nicht im Moment des synchronisierens - hmm schwierig zu erklären - ach egal )

Funky-Sepp 11. Okt 2007 15:17

Re: CurrentThread in Delphi
 
Also folgendes Problem haben wir,

wir haben eine Komponente die eine Datenbankverbindung mit DBExpress/Firebird aufmacht
und auf diese DbVerbindung mit mehreren Threads zugreift.

Nun ist uns aufgefallen dass wenn mehr als ein Thread auf die Datenbank zugreift sich die Datenbankverbindung verabschiedet.
Also wollten wir nun, wenigstens als Workaround (was nun auch funktioniert) unsere Aufrufe Synchronisieren.

Das eigentliche Problem ist dass uns die Datenbankverbindung abschmiert

sirius 11. Okt 2007 15:23

Re: CurrentThread in Delphi
 
Da kann man wohl nix machen, wenn eh alles auf diese Datenbank warten muss.

Ich weis ja nicht,was diese Threads noch machen. Aber vielleicht ghilft ein zusätzlicher Thread, der eine Liste mit den aktuell abzuarbeitenden SQL-Befehlen hat und diese ausführt und die Antworten wieder zurück an die Threads verteilt. Aber das geht auch nur, wenn die Antworten der Datenbank nicht kritisch sind für den weiteren Ablauf (und das wird wahrscheinlich der Fall sein).

Funky-Sepp 11. Okt 2007 15:28

Re: CurrentThread in Delphi
 
Ja genauso ist es,

ausserdem habe ich keine Lust den kompletten Code der Fremdkomponente durchzugehen um dies zu beheben.

Aber ist doch immer das gleiche mit den Fremdkomponenten, man sollte von anfang an alles selber machen.
Wenn das dann nur immer nicht so schwer und vor allem Zeitaufwendig wär. :wink:

Chewie 12. Okt 2007 17:25

Re: CurrentThread in Delphi
 
So wie ich das lese, klingt es so, als würdet ihr mehrere Threads und nur ein Datenbankzugriffsobjekt haben. Dabei handelt es sich um eine Fremdkomponente, die nicht multi-threading fähig ist.

Könntet ihr nicht versuchen, für jeden Thread ein eigenes Verbindungsobjekt zu erzeugen? Bzw. wenn das die Datenbank zu sehr belasten würde könntet ihr mit einer poolbasierten Lösung arbeiten.

Funky-Sepp 15. Okt 2007 07:41

Re: CurrentThread in Delphi
 
@Chewie

Das ist ne gute Idee, werde diese mal im Auge behalten.
Der Umbau wird leider nur ein bisschen kompliziert, da die Fremdkomponente den Thread erstellt und die Datenbankverbindung von mir kommt. Aber ich hab da schon eine Idee wie ich dies umbauen kann.

Danke für den Tipp.

Werde wieder hier Posten wenns funktioniert hat.
Kann aber ein bisschen dauern, da ich im moment wieder an anderen sachen arbeite.

stahli 10. Sep 2009 21:53

Re: CurrentThread in Delphi
 
Und - hat´s funktioniert? ;-)
Ich weiß, Du bist mir 2 Jahre voraus, aber ich will jetzt genau das selbe Problem angehen.

Mein Überlegung: Jedem Thread eine eigene IBDatabase zuweisen, um in EINER Anwendung gleichzeitige Zugriffe über MEHRERE Threads auf eine FB-EMBEDDED-Datenbank zu ermöglichen.

Ist das ein gangbarer Weg?

Stahli


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:01 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz