Einzelnen Beitrag anzeigen

Thorus

Registriert seit: 3. Jul 2004
23 Beiträge
 
Delphi 2005 Personal
 
#1

Threads: optimale Nutzen/Prozessorleistung-Optimierung

  Alt 30. Mär 2005, 13:29
Hallo,

ich habe einen Thread, der das tut was er soll. Das Problem ist nur, dass die Prozessorleistung immer auf 100% ist.
Code:
uses rdtsc;

procedure TMyThread.Execute;
var
  Zeit:int64;
begin
  Zeit := cpuGetTick;
  while not Terminated do
  begin
    if cpuGetMs(Zeit) > 9 then
    begin
      Zeit := cpuGetTick;
      Synchronize(TueEtwas);
    end;
  end;
end;
Dieser Thread ruft die Methode TueEtwas maximal so 100 mal in der Sekunde auf.
Ich hatte auch probiert vor "if cpuGet.." Sleep(1) zu setzen. Dies funktioniert zwar, ist aber viel zu langsam. Mit Sleep war die Prozessorbelastung aber minimal, so wie es sein sollte.
75-100 mal pro Sekunde sollten es schon sein.

Das Problem bei Sleep ist auch, dass, wenn für das auszuführende TueEtwas 10 ms verbraucht werden, dann wartet er mit Sleep trotzdem noch eine Weile, obwohl TueEtwas eigentlich sofort wieder ausgeführt werden sollte.

Wenn Sleep(1) wirklich nur 1 ms brauchen würde, wär das ja ok, aber das tut es wohl nicht.
  Mit Zitat antworten Zitat