Hallo,
ich habe eine massives Thread-Problem.
In meiner Applikation werden zwei Oracle-Datenbanken (datensatzweise) kopiert. Dieses findet in jeweils einem eigenen Thread statt.
Werden die einzelnen Thread nacheinander gestartet, läuft es wunderbar - nur - die Rechner langweilen sich.
Wenn ich zur gleichen Zeit max. 10 Threads starten lasse, bekomme ich beim zweiten "TQuery.Open" (in dieser werden die Datensätze eingefügt, die abgeglichen werden müssen, über "Insert Into" geht es nicht, da ich long-Felder habe) eine fette Zugriffsverletzung und kann nur noch über CTRL-F2 abbrechen. Ohne Delphi kommt Dr. Watson, machmal wird mein Programm auch ohne Meldung aus dem Speicher gekickt.
In jedem Thread wird eine andere Tabelle abgearbeitet, d.h. es findet zur gleichen Zeit KEIN Zugriff auf ein und diesselbe Tabelle statt (doch: eine Protokolltabelle - die funktioniert aber, hier greife ich über "insert into" zu).
Ich habe das ganze mal auf "Direct Oracle Access" von Allround Automations (www.allroundautomations.nl) umgesetzt und getestet. Hier gibts absolut keine Probleme. Geht übrigens auch noch ca. 5 mal so schnell wie mit der BDE. (Ist aber nur eine Zukunftslösung, da die Hauptapplikation über die BDE zugreift - DOA for future release)
Kann mir jemand helfen, wo ich ansetzen kann?
Vielen Dank im Voraus
Michael Habbe
ich habe eine massives Thread-Problem.
In meiner Applikation werden zwei Oracle-Datenbanken (datensatzweise) kopiert. Dieses findet in jeweils einem eigenen Thread statt.
Werden die einzelnen Thread nacheinander gestartet, läuft es wunderbar - nur - die Rechner langweilen sich.
Wenn ich zur gleichen Zeit max. 10 Threads starten lasse, bekomme ich beim zweiten "TQuery.Open" (in dieser werden die Datensätze eingefügt, die abgeglichen werden müssen, über "Insert Into" geht es nicht, da ich long-Felder habe) eine fette Zugriffsverletzung und kann nur noch über CTRL-F2 abbrechen. Ohne Delphi kommt Dr. Watson, machmal wird mein Programm auch ohne Meldung aus dem Speicher gekickt.
In jedem Thread wird eine andere Tabelle abgearbeitet, d.h. es findet zur gleichen Zeit KEIN Zugriff auf ein und diesselbe Tabelle statt (doch: eine Protokolltabelle - die funktioniert aber, hier greife ich über "insert into" zu).
Ich habe das ganze mal auf "Direct Oracle Access" von Allround Automations (www.allroundautomations.nl) umgesetzt und getestet. Hier gibts absolut keine Probleme. Geht übrigens auch noch ca. 5 mal so schnell wie mit der BDE. (Ist aber nur eine Zukunftslösung, da die Hauptapplikation über die BDE zugreift - DOA for future release)
Kann mir jemand helfen, wo ich ansetzen kann?
Vielen Dank im Voraus
Michael Habbe
Comment