Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi zeos + sqlite threadsafe? (https://www.delphipraxis.net/167377-zeos-sqlite-threadsafe.html)

ChEeTaH 27. Mär 2012 09:44

Datenbank: sqlite • Version: 3 • Zugriff über: zeos 7

zeos + sqlite threadsafe?
 
Hallo,
Ist Zeos threadsafe? Sqlite ist standardmäßig threadsafe doch wie sieht es mit Zeos aus? Ich habe nur einen alten Post von 2005 gefunden in dem steht dass Zeos es nicht sei. Ich bekomme nämlich ne menge Fehler beim DB Zugriff aus dem Thread heraus, obwohl alle DB Objekte erst im Thread erzeugt werden.

mfg

mkinzler 27. Mär 2012 09:46

AW: zeos + sqlite threadsafe?
 
Auf welcher Ebene von Zeos erzeugst du die Objekte (DBC, VCL)?

ChEeTaH 27. Mär 2012 10:02

AW: zeos + sqlite threadsafe?
 
Das ist eine gute Frage, ich hab den Code gerade nicht zur Hand. ich habe eine wrapper unit, also nehme ich an , das es nicht vcl ist. Ich schaue nach sobald ich kann.

ChEeTaH 27. Mär 2012 20:46

AW: zeos + sqlite threadsafe?
 
Nein, es ist nicht vcl.

Ich habe eine DB Wrapper Unit, ich baue dort nur eine Verbindung zur DB mit TZConnection auf.
In dem Thread erzeuge ich dann das Objekt und schreibe/ lese in die DB.
Ich habe das Gefühl, dass sich der Thread "überholt" sprich er wartet nicht, bis die DB Wrapper Unit fertig ist, die Anfrage an die DB zu schicken.

ich kriege auch öfters bei
Delphi-Quellcode:
function TZAbstractRODataset.GetSQL: TStrings;
begin
  Result := FSQL;
end;
eine Accesviolation.. Richtig instanziert ist aber.

Edit:
Problem gelöst, hatte ein True bei Create() vergessen :)
Allerdings hängt das Programm jetzt wenn der Thread ausgeführt wird, obwohl ich keine CriticalSections oder Synchronize habe. Woran kann das liegen?

himitsu 27. Mär 2012 21:44

AW: zeos + sqlite threadsafe?
 
Zitat:

Zitat von ChEeTaH (Beitrag 1158990)
Allerdings hängt das Programm jetzt wenn der Thread ausgeführt wird, obwohl ich keine CriticalSections oder Synchronize habe. Woran kann das liegen?

Gute Frage ... Was machts du denn da drin?

Nja, viele Connections können nur einwas gleichzeitig machen,
also immer nur ein Thread kann gleichzeitig mit dieser Connection arbeiten.

Manchmal kann man auch sowas wie ein Connection-Pooling aktivieren, womit dann eventuell mehr möglich ist.

ChEeTaH 27. Mär 2012 21:49

AW: zeos + sqlite threadsafe?
 
Zitat:

Zitat von himitsu (Beitrag 1158994)
Zitat:

Zitat von ChEeTaH (Beitrag 1158990)
Allerdings hängt das Programm jetzt wenn der Thread ausgeführt wird, obwohl ich keine CriticalSections oder Synchronize habe. Woran kann das liegen?

Gute Frage ... Was machts du denn da drin?

Viele bunte, tolle Sachen :) Nein, im Ernst ich hatte eine Kleinigkeit vergessen. Nun funktioniert alles so wie ich möchte. Vielen Dank an alle für die schnelle Hilfe, bzw euch beide ;)!


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:50 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