Einzelnen Beitrag anzeigen

Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#18

AW: Multithreading (Access Violation)

  Alt 21. Nov 2016, 16:16
Da nur eine einzige globale Instanz der TMySQLUniProvider Klasse erstellt wird, kann ich mir gut vorstellen, dass es hier kracht, wenn diese nicht thread-safe ist und die in den Threads erstellten Klassen da irgendwie indirekt drauf zugreifen.
Hab ich da was übersehen? In dem Zweiten Sourcecode hat jeder Thread eine eigene Connection und eine eigene Query?
Zitat:
Delphi-Quellcode:
procedure TThread1.Execute;
var DBConnection: TUniConnection; DBQuery: TUniQuery;
begin
   while not Terminated do
   begin
     DBConnection:=TUniConnection.Create(nil);
     DBConnection.Server:='172.16.6.50';
     DBConnection.Port:=3306;
     DBConnection.Username:='root_copy';
     DBConnection.Password:='password';
     DBConnection.ProviderName:='MySQL';
     DBConnection.Database:='testdb';

     DBConnection.Connect;

     if DBConnection.Connected then
     begin
         DBQuery:=TUniQuery.Create(nil);
         DBQuery.Connection:=DBConnection;
         DBQuery.SQL.Text:='INSERT into test SET datum=NOW(), thread=1;';
         DBQuery.Execute;
         DBQuery.Free;
       DBConnection.Close;
     end;

     DBConnection.Free;

     sleep(2000);
   end;
end;
Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat