gut, soweit so gut. ich habe mich nun etwas in das thema eingelesen, nru verstehe ich glaub einiges noch nicht ganz so richtig...
annahme: ich habe den haupt-thread und einen anderen - dies ist ja auch zwei andere beliebige threads anwendbar. beim haupt-hread habe ich ein objekt, welches auf die datenbank zugreift (klasse tdatabase). im anderen thread habe ich eine referenz auf dieses objekt. wenn ich nun beim "normalen" thread eine
sql-anweisung mache, dann sollte diese ja innerhalb von critical sections stehen, da es sonst zu problemen kommen kann, nur wie implementiere ich das?
könntet ihr mir im folgenden quellcode sagen, wo ich die critical section einfügen muss?!? ich kann das ja als lokale (als innerhalb der Methode machen) variable definieren, in der tdatabase-klasse oder in der tmainthread-klasse!? was ist die lösung?
Delphi-Quellcode:
TMainThread = class(TThread)
private
FDatabase : TDatabase;
public
procedure execSQL();
end;
procedure TMainThread.execSQL();
begin
FDatabase.execSQL('SELECT...');
row := FDatabase.getDataFromRow(0);
{ ... }
end;
TSecondThread = class(TThread)
private
FDatabase : TDatabase;
public
procedure execSQL();
end;
procedure TSecondThread.execSQL();
begin
FDatabase.execSQL('SELECT...');
row := FDatabase.getDataFromRow(0);
{ ... }
end;
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)