Hi,
Ein Beispiel: In Unit1.pas ist die globale Variable TotalBytesRec definiert.
Delphi-Quellcode:
var
TotalBytesRec : Int64 = 0;
In einem von mehreren Threads wird folgender Code ausgeführt:
Delphi-Quellcode:
procedure TDownloadThread.OnWork(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCount: Integer);
var i: Integer;
begin
If AWorkMode=wmRead then
begin
Inc(TotalBytesRec, AWorkCount-FLastWorkCount);
i := PercentDone;
PercentDone := trunc((AWorkCount / FileSize) * 100);
If i<>PercentDone then Synchronize(UpdateProgress);
FLastWorkCount := AWorkCount;
end;
end;
Das Problem:
Der Aufruf von Inc() macht mir Sorgen; ist das überhaupt Thread-sicher? Bei nem Int64 wird wohl kaum eine atomare Operation daraus
Gruß,
Dani
Dani H.