mamcx,
Cita:
Empezado por mamcx
...Me suena lo de paralelo. ¿Alguna información de como es la codificación?...
|
Al parecer tiene que ver con este nueva clase en Delphi XE7 :
TParallel
Revisa este fragmento de código:
Código Delphi
[-]
procedure TLifeEngine.TLifeThread.Execute;
var
Update, Timer: TStopwatch;
I: Integer;
begin
NameThreadForDebugging('Life Thread');
Update := TStopwatch.StartNew;
while not Terminated do
begin
Timer := TStopwatch.StartNew;
if Length(FNewBoard) > 0 then
begin
FOriginalBoard := FNewBoard;
FNewBoard := nil;
end else
FOriginalBoard := FLifeEngine.FLifeBoard;
SetLength(FNewBoard, Length(FOriginalBoard), Length(FOriginalBoard[0]));
if FParallel then
begin
TParallel.For(Low(FOriginalBoard), High(FOriginalBoard),
procedure (Value: Integer)
begin
ProcessCells(nil, Value);
end);
end else
for I := Low(FOriginalBoard) to High(FOriginalBoard) do
ProcessCells(nil, I);
FGensPerSecond := Timer.Frequency / Timer.ElapsedTicks;
if Update.ElapsedTicks >= Update.Frequency div FLifeEngine.UpdateRate then
begin
FUpdating := True;
Synchronize(UpdateGeneration);
Assert(not FUpdating);
Update := TStopwatch.StartNew;
end;
Inc(FLifeEngine.FGenerationCount);
FElapsed := Timer.ElapsedTicks;
end;
end;
El fragmento de código anterior,
es un ejemplo de la nueva Parallel Programming Library que viene con Delphi XE7, el video del ejemplo se puede ver a continuación:
El código completo del vídeo para VCL y FMX esta en el siguiente link :
Parallel Library
Espero sea útil
Nelson.