Autor Beitrag
Heiko
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: Fr 04.03.05 17:30 
Ich bin momentan dabei mir ein 3D-Spiel zu programmieren. Da einige Grafikkarten aber ziemlich langsam sind, habe ich die Tatstaturbewegung in einen Thread ausgelagert, damit die Bewegung relativ unabhängig von der Grafikkartenleistung ist. In dem Thread habe ich erstmal die die Priorität des Thread auf minimal eingestellt, doch der Thread verursacht eine CPU-Auslastung von 100% die der Quelltext gar nicht benötigt, zumindestens mein 3200er (MHz) nicht.
Kann man irgendwie eine geringere CPU-Auslastung erzeugen?

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure Timer_Thread.Execute;
begin
 Priority:=tpIdle;
 while true do
  begin
   ...
  end
end;


(In der Endlosschleife ist die Bewegungsroutine)
wulfskin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1349
Erhaltene Danke: 1

Win XP
D5 Pers (SSL), D2005 Pro, C, C#
BeitragVerfasst: Fr 04.03.05 17:40 
Hallo,

ich denke das ist ganz normal, dass ein Thread mit einer Endlosschleife 100% braucht, wenn kein andere Thread gerade Rechenzeit benötigt.
Abgesehen davon ist meiner Meinung nach der Ansatz völlig falsch, da man sowas durch "heruntersetzen" der FPS steuert, also durch zeitliche Berechnung und nicht durch einen Thread.

GRuß Hape!

_________________
Manche antworten um ihren Beitragszähler zu erhöhen, andere um zu Helfen.
Heiko Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: Fr 04.03.05 17:46 
FPS????????
Heiko Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: Fr 04.03.05 17:49 
Achso ich habe die Bewegung ausgelagert, da dieser Thread später als Arbeitroutine des Servers dienen soll und damit unabhängig sein soll od der Server selber mitspielt. Ich habe es auch ale einen Thread ausgelagert um zu probieren, ob es auf meinem 233er damit schneller läuft, was auch der Fall ist (ich weiß nicht warum das OpenGl-Programm so langsam läuft).
wulfskin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1349
Erhaltene Danke: 1

Win XP
D5 Pers (SSL), D2005 Pro, C, C#
BeitragVerfasst: Fr 04.03.05 19:00 
FPS = Frames per Second (Also die Anzahl Bilder, die in jeder Sekunde gezeichnet werden)

Ich kenn mich eigentlich damit gar nicht aus, aber hab von den Neo Brothers mal was interessantes darüber gelesen:
www.neobrothers.de/.

GRuß Hape!

_________________
Manche antworten um ihren Beitragszähler zu erhöhen, andere um zu Helfen.
Heiko Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: Sa 05.03.05 10:36 
Das FPS=Frames per Second sind weiß ich, ich dachte du meinst mit FPS irgendetwas anderes und bei www.neobrothers.de/ wo soll da was stehen (das Forum funktioniert nicht)??
uall@ogc
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1826
Erhaltene Danke: 11

Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
BeitragVerfasst: Sa 05.03.05 10:38 
ein thread hat 100% auslastung bei ner endlosschleife
nen sleep(100) würde da aushelfen, dann wird die schleife nur alle 100 msek ausgeführt und solltest dann 0% prozessorauslastung haben

_________________
wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit
Heiko Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: Sa 05.03.05 10:45 
stimmt daran habe ich gar nicht mehr gedacht, normalerweise schreibe ich in ne Endlosschleife mindestens sleep(0) :autsch: .